Firmware description
UM1619
38/56
DocID024383 Rev 1
buffer[9] = PROG_GRP_LL_STACK_PARAM;
buffer[10,11] = new_group;
buffer[12,13,14,15] = new_address;
buffer[16] = (uint8_t)module_working_mode;
buffer[17] = hop_level;
/* IF AES ENCRYPTION IS ENABLED */
buffer[18 -> 33] = *AES_key_buffer;
// AES Key 0 to 15, 16 bytes
buffer[34,35] = CRC16;
/* IF AES ENCRYPTION IS DISABLED */
buffer[18,19] = CRC16;
module_working_mode
-------------------------
b7 b6 b5 b4 b3 b2 b1 b0
-------------------------
| | | | | | | +-- 1 = Reserved
| | | | | | +----- 1 = ACK frame requested 0 = ACK frame not requested
| | | | | +-------- 1 = bACK frame requested 0 = bACK frame not requested
| | | | +----------- 1 = Dongle works also as a repetitor 0 = Dongle doesn’t repeat frames
| | | +-------------- 1 = Static repeater behavior
0 = Repeat only frames
| | |
without response
| | +----------------- 1 = Grouping filter (subnet) enabled 0 = Grouping filter disabled
| +-------------------- 1 = Encrypted data 0 = Clear data
+----------------------- 1 = Reserved
5) Set module parameters: programming user parameters
uint8_t *buffer;
buffer[0] = 32;
buffer[1] = APP_PROGRAMMING_FRAME;
buffer[2,3] = target_module.group;
buffer[4,5,6,7] = target_module.address;
buffer[8] = PROG_CMD_SET_DATA;
buffer[9] = PROG_GRP_USER_DATA;
buffer[10 -> 29] = *user_data_buffer;
buffer[30,31] = CRC16;
6) Get module parameters
uint8_t *buffer;
buffer[0] = 12;
buffer[1] = APP_PROGRAMMING_FRAME;
buffer[2,3] = target_module.group;
buffer[4,5,6,7] = target_module.address;
buffer[8] = PROG_CMD_GET_DATA;
/* FOR GET DATA LINK STACK PARAMETERS */
buffer[9] = PROG_GRP_LL_STACK_PARAM;
/* FOR GET MODULE PARAMETERS */
buffer[9] = PROG_GRP_DEVICE_DATA;
/* FOR GET USER DATA */
buffer[9] = PROG_GRP_USER_DATA;
buffer[10,11] = CRC16;
After a certain delay from the get command acknowledgment, the PLM module will send the following
frame:
/* RESPONSE FRAME FOR DATA LINK STACK PARAMETERS GET COMMAND */
APP_userdata_t frame;
frame.source = SOURCE_PLM / ...;
// Data source PLM, ...
frame.type = APP_PROGRAMMING_FRAME;
frame.len = 52;
frame.error = APP_ERROR_NONE;
frame.broadcast = FALSE;
frame.group = sender.group;
// Device (the one been queried)group
frame.address = sender.address;
// Device (the one been queried)address