From 2b937ae45ba9a508d51bee8fa87a7964e88dccaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vlastimil=20Slint=C3=A1k?= Date: Wed, 9 Jul 2025 12:02:01 +0200 Subject: [PATCH] Changed code formatting from tabs to spaces --- NPR_14/source/DHCP_ARP.cpp | 1310 +++++------ NPR_14/source/Eth_IPv4.cpp | 486 ++-- NPR_14/source/HMI_telnet.cpp | 1664 +++++++------- NPR_14/source/HMI_telnet.h | 2 +- NPR_14/source/L1L2_radio.cpp | 1282 +++++------ NPR_14/source/SI4463.cpp | 2328 ++++++++++---------- NPR_14/source/SI4463.h | 8 +- NPR_14/source/SI4463/SI4463_config_11.h | 246 +-- NPR_14/source/SI4463/SI4463_config_11_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_12.h | 246 +-- NPR_14/source/SI4463/SI4463_config_12_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_13.h | 246 +-- NPR_14/source/SI4463/SI4463_config_13_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_14.h | 246 +-- NPR_14/source/SI4463/SI4463_config_14_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_20.h | 246 +-- NPR_14/source/SI4463/SI4463_config_20_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_21.h | 246 +-- NPR_14/source/SI4463/SI4463_config_21_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_22.h | 246 +-- NPR_14/source/SI4463/SI4463_config_22_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_23.h | 246 +-- NPR_14/source/SI4463/SI4463_config_23_2m.h | 246 +-- NPR_14/source/SI4463/SI4463_config_24.h | 246 +-- NPR_14/source/SI4463/SI4463_config_24_2m.h | 246 +-- NPR_14/source/SPI_F4HDK.cpp | 10 +- NPR_14/source/TDMA.cpp | 758 +++---- NPR_14/source/Virt_Chan.cpp | 38 +- NPR_14/source/W5500.cpp | 568 ++--- NPR_14/source/W5500.h | 4 +- NPR_14/source/config_flash.cpp | 434 ++-- NPR_14/source/config_flash.h | 74 +- NPR_14/source/ext_SRAM2.cpp | 350 +-- NPR_14/source/ext_SRAM2.h | 2 +- NPR_14/source/global_variables.cpp | 32 +- NPR_14/source/global_variables.h | 48 +- NPR_14/source/signaling.cpp | 970 ++++---- NPR_14/source/signaling.h | 18 +- 38 files changed, 7407 insertions(+), 7407 deletions(-) diff --git a/NPR_14/source/DHCP_ARP.cpp b/NPR_14/source/DHCP_ARP.cpp index d0d3900..aaa6b42 100644 --- a/NPR_14/source/DHCP_ARP.cpp +++ b/NPR_14/source/DHCP_ARP.cpp @@ -30,708 +30,708 @@ #define DHCP_ARP_timeout 360 /*120*/ static unsigned char DHCP_ARP_MAC[DHCP_ARP_tab_size][6]; static unsigned long int DHCP_ARP_IP[DHCP_ARP_tab_size]; -static unsigned char DHCP_ARP_status[DHCP_ARP_tab_size]; // DHCP ARP - // 0: Free Free - // 1: allocation in progress (unused) - // 2: allocated Valid - // 3: prefered but not allocated Timeout_1 +static unsigned char DHCP_ARP_status[DHCP_ARP_tab_size]; // DHCP ARP + // 0: Free Free + // 1: allocation in progress (unused) + // 2: allocated Valid + // 3: prefered but not allocated Timeout_1 static unsigned int DHCP_ARP_date[DHCP_ARP_tab_size]; int compare_IP(unsigned char* IP1, unsigned char* IP2) { - int result; - int i; - result = 1; - for (i=0; i<4; i++) { - if (IP1[i] != IP2[i]) { - result = 0; - } - } - return result; + int result; + int i; + result = 1; + for (i=0; i<4; i++) { + if (IP1[i] != IP2[i]) { + result = 0; + } + } + return result; } int compare_MAC(unsigned char* MAC1, unsigned char* MAC2) { - int result; - int i; - result = 1; - for (i=0; i<6; i++) { - if (MAC1[i] != MAC2[i]) { - result = 0; - } - } - return result; + int result; + int i; + result = 1; + for (i=0; i<6; i++) { + if (MAC1[i] != MAC2[i]) { + result = 0; + } + } + return result; } // *** DHCP functions *** void reset_DHCP_table(LAN_conf_T* LAN_config) { - int i; - for (i=0; iDHCP_alloc_MAC[i], client_MAC), i); - } - //printf ("previous entry with same MAC: %i\r\n", i_previous_alloc); - // 1.2)check if matches previous allocation - if (i_previous_alloc!=255) { - if (DHCP_ARP_IP[i_previous_alloc] == req_IP_int) { - match_previous_alloc = 1; - } else { - match_previous_alloc = 0; - } - if (match_previous_alloc==1) {// matches previous allocation - // total match with previous allocation - answer = 1; - if (req_type==1) { - DHCP_ARP_status[i_previous_alloc] = 1; - } - if (req_type==3) { - DHCP_ARP_status[i_previous_alloc] = 2; - DHCP_ARP_date[i_previous_alloc] = GLOBAL_timer.read_us(); - } - } else { - //address requested different from previous allocation - - } - //printf ("req matches previous:%i\r\n", match_previous_alloc); - - } - // 1.3) check if requested IP agreed : inside range - int requ_IP_inside_range; - if ( (req_IP_int >= LAN_config->DHCP_range_start) && (req_IP_int < (LAN_config->DHCP_range_start + LAN_config->DHCP_range_size)) ) { - requ_IP_inside_range = 1; - } else { - requ_IP_inside_range = 0; - } - //printf("requested ip inside range:%i\r\n", requ_IP_inside_range); - // 1.4) chech if requested IP is free (not allocated to another MAC) - int req_IP_free = 1; - for (i=0; iDHCP_range_size - 1); i>=0; i--) { - IP_tested = LAN_config->DHCP_range_start + i; - OK_loc=1; - for (j=0; jDHCP_alloc_MAC[i], client_MAC), i); + } + //printf ("previous entry with same MAC: %i\r\n", i_previous_alloc); + // 1.2)check if matches previous allocation + if (i_previous_alloc!=255) { + if (DHCP_ARP_IP[i_previous_alloc] == req_IP_int) { + match_previous_alloc = 1; + } else { + match_previous_alloc = 0; + } + if (match_previous_alloc==1) {// matches previous allocation + // total match with previous allocation + answer = 1; + if (req_type==1) { + DHCP_ARP_status[i_previous_alloc] = 1; + } + if (req_type==3) { + DHCP_ARP_status[i_previous_alloc] = 2; + DHCP_ARP_date[i_previous_alloc] = GLOBAL_timer.read_us(); + } + } else { + //address requested different from previous allocation + + } + //printf ("req matches previous:%i\r\n", match_previous_alloc); + + } + // 1.3) check if requested IP agreed : inside range + int requ_IP_inside_range; + if ( (req_IP_int >= LAN_config->DHCP_range_start) && (req_IP_int < (LAN_config->DHCP_range_start + LAN_config->DHCP_range_size)) ) { + requ_IP_inside_range = 1; + } else { + requ_IP_inside_range = 0; + } + //printf("requested ip inside range:%i\r\n", requ_IP_inside_range); + // 1.4) chech if requested IP is free (not allocated to another MAC) + int req_IP_free = 1; + for (i=0; iDHCP_range_size - 1); i>=0; i--) { + IP_tested = LAN_config->DHCP_range_start + i; + OK_loc=1; + for (j=0; j=0; i--) { - if (DHCP_ARP_status[i]!=2) { - free_DHCP_slot = i; - } - //printf("dhcp inside lookfor:%i stat:%i\r\n", i, LAN_config->DHCP_alloc_status[i]); - } - if (free_DHCP_slot!=255) { - DHCP_ARP_status[free_DHCP_slot] = new_status; - if (new_status == 2) {DHCP_ARP_date[free_DHCP_slot] = GLOBAL_timer.read_us();} - DHCP_ARP_IP[free_DHCP_slot] = IP_char2int(proposed_IP); - for (i=0; i<6; i++) { - DHCP_ARP_MAC[free_DHCP_slot][i] = client_MAC[i]; - } - //printf("new DHCP entry OK, index %i status %i \r\n", free_DHCP_slot, new_status); - } - } - return answer; + // new DHCP entry + int free_DHCP_slot=255; + if (new_alloc_entry == 1) { + for (i=DHCP_ARP_tab_size-1; i>=0; i--) { + if (DHCP_ARP_status[i]!=2) { + free_DHCP_slot = i; + } + //printf("dhcp inside lookfor:%i stat:%i\r\n", i, LAN_config->DHCP_alloc_status[i]); + } + if (free_DHCP_slot!=255) { + DHCP_ARP_status[free_DHCP_slot] = new_status; + if (new_status == 2) {DHCP_ARP_date[free_DHCP_slot] = GLOBAL_timer.read_us();} + DHCP_ARP_IP[free_DHCP_slot] = IP_char2int(proposed_IP); + for (i=0; i<6; i++) { + DHCP_ARP_MAC[free_DHCP_slot][i] = client_MAC[i]; + } + //printf("new DHCP entry OK, index %i status %i \r\n", free_DHCP_slot, new_status); + } + } + return answer; } void DHCP_server(LAN_conf_T* LAN_config, W5500_chip* W5500 ) { - static unsigned char RX_data[600];//600 - unsigned char client_MAC[7]; - unsigned char session_ID[5]; - unsigned char requested_IP[5]={0,0,0,0,0}; - unsigned char DHCP_server_IP[5]={0,0,0,0,0}; - int RX_size, size_UDP, i; - unsigned char message_type_client = 0; - unsigned char message_type_server; - int index_opt_answer=240; - static unsigned char DHCP_answer[400]; - unsigned char proposed_IP[4]; - int loc_status; - - - RX_size = W5500_read_received_size(W5500, 3); - if (RX_size>0) { - - size_UDP = W5500_read_UDP_pckt(W5500, 3, RX_data); - if (RX_data[8]==1) { // Valid DHCP request - - // *** DHCP request decoding *** - // client mac address read - for (i=0; i<6; i++) { - client_MAC[i] = RX_data[i+36]; - //printf("%x:", client_MAC[i]); - } - // session ID (XID) - for (i=0; i<4; i++) { - session_ID[i] = RX_data[i+12]; - //printf("%x:", session_ID[i]); - } - for (i=0; i<4; i++) { - requested_IP[i] = RX_data[i+20]; - } - //printf("\r\n"); - //printf("\r\nDHCP from client RXs:%d UDPs:%d\r\n", RX_size, size_UDP); - // DHCP option read - int option_pos; - unsigned char option_size; - unsigned char option_type; - option_pos = 248; - do { - option_type = RX_data[option_pos]; - option_size = RX_data[option_pos+1]; - //printf("option:%d\r\n",option_type); - - switch (option_type) { - case 53 : message_type_client = RX_data[option_pos+2]; break; - case 50 : - requested_IP[0] = RX_data[option_pos+2]; - requested_IP[1] = RX_data[option_pos+3]; - requested_IP[2] = RX_data[option_pos+4]; - requested_IP[3] = RX_data[option_pos+5]; - break; - case 54 : - DHCP_server_IP[0] = RX_data[option_pos+2]; - DHCP_server_IP[1] = RX_data[option_pos+3]; - DHCP_server_IP[2] = RX_data[option_pos+4]; - DHCP_server_IP[3] = RX_data[option_pos+5]; - break; - } - option_pos = option_pos + option_size + 2; - } while ((option_type != 255) && (option_pos < size_UDP)); - - // independant DHCP answer fields - for (i=0; i<400; i++ ) { - DHCP_answer[i] = 0; - } - DHCP_answer[0] = 0x02;//answer - DHCP_answer[1] = 0x01; - DHCP_answer[2] = 0x06; - DHCP_answer[3] = 0x00; - for (i=0; i<4; i++) {// session ID - DHCP_answer[i+4] = session_ID[i]; - } - for (i=0; i<6; i++) {// client MAC - DHCP_answer[i+28] = client_MAC[i]; - } - DHCP_answer[236] = 0x63;//magic cookie - DHCP_answer[237] = 0x82; - DHCP_answer[238] = 0x53; - DHCP_answer[239] = 0x63; - - // decision - loc_status = lookfor_free_LAN_IP (LAN_config, client_MAC, requested_IP, proposed_IP, message_type_client); - - if (message_type_client == 1) { // discover -> offer - - for (i=0; i<4; i++) { //proposed IP - DHCP_answer[i+16] = proposed_IP[i]; - } - - message_type_server = 2; - DHCP_answer[index_opt_answer]=53; // message type - DHCP_answer[index_opt_answer+1]=1; - DHCP_answer[index_opt_answer+2]=message_type_server; - index_opt_answer = index_opt_answer +3; - DHCP_answer[index_opt_answer]=1; // subnet mask - DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_subnet_mask, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - if (LAN_config->LAN_def_route_activ == 1) { - DHCP_answer[index_opt_answer]=3; // default route - DHCP_answer[index_opt_answer+1]=4; + static unsigned char RX_data[600];//600 + unsigned char client_MAC[7]; + unsigned char session_ID[5]; + unsigned char requested_IP[5]={0,0,0,0,0}; + unsigned char DHCP_server_IP[5]={0,0,0,0,0}; + int RX_size, size_UDP, i; + unsigned char message_type_client = 0; + unsigned char message_type_server; + int index_opt_answer=240; + static unsigned char DHCP_answer[400]; + unsigned char proposed_IP[4]; + int loc_status; + + + RX_size = W5500_read_received_size(W5500, 3); + if (RX_size>0) { + + size_UDP = W5500_read_UDP_pckt(W5500, 3, RX_data); + if (RX_data[8]==1) { // Valid DHCP request + + // *** DHCP request decoding *** + // client mac address read + for (i=0; i<6; i++) { + client_MAC[i] = RX_data[i+36]; + //printf("%x:", client_MAC[i]); + } + // session ID (XID) + for (i=0; i<4; i++) { + session_ID[i] = RX_data[i+12]; + //printf("%x:", session_ID[i]); + } + for (i=0; i<4; i++) { + requested_IP[i] = RX_data[i+20]; + } + //printf("\r\n"); + //printf("\r\nDHCP from client RXs:%d UDPs:%d\r\n", RX_size, size_UDP); + // DHCP option read + int option_pos; + unsigned char option_size; + unsigned char option_type; + option_pos = 248; + do { + option_type = RX_data[option_pos]; + option_size = RX_data[option_pos+1]; + //printf("option:%d\r\n",option_type); + + switch (option_type) { + case 53 : message_type_client = RX_data[option_pos+2]; break; + case 50 : + requested_IP[0] = RX_data[option_pos+2]; + requested_IP[1] = RX_data[option_pos+3]; + requested_IP[2] = RX_data[option_pos+4]; + requested_IP[3] = RX_data[option_pos+5]; + break; + case 54 : + DHCP_server_IP[0] = RX_data[option_pos+2]; + DHCP_server_IP[1] = RX_data[option_pos+3]; + DHCP_server_IP[2] = RX_data[option_pos+4]; + DHCP_server_IP[3] = RX_data[option_pos+5]; + break; + } + option_pos = option_pos + option_size + 2; + } while ((option_type != 255) && (option_pos < size_UDP)); + + // independant DHCP answer fields + for (i=0; i<400; i++ ) { + DHCP_answer[i] = 0; + } + DHCP_answer[0] = 0x02;//answer + DHCP_answer[1] = 0x01; + DHCP_answer[2] = 0x06; + DHCP_answer[3] = 0x00; + for (i=0; i<4; i++) {// session ID + DHCP_answer[i+4] = session_ID[i]; + } + for (i=0; i<6; i++) {// client MAC + DHCP_answer[i+28] = client_MAC[i]; + } + DHCP_answer[236] = 0x63;//magic cookie + DHCP_answer[237] = 0x82; + DHCP_answer[238] = 0x53; + DHCP_answer[239] = 0x63; + + // decision + loc_status = lookfor_free_LAN_IP (LAN_config, client_MAC, requested_IP, proposed_IP, message_type_client); + + if (message_type_client == 1) { // discover -> offer + + for (i=0; i<4; i++) { //proposed IP + DHCP_answer[i+16] = proposed_IP[i]; + } + + message_type_server = 2; + DHCP_answer[index_opt_answer]=53; // message type + DHCP_answer[index_opt_answer+1]=1; + DHCP_answer[index_opt_answer+2]=message_type_server; + index_opt_answer = index_opt_answer +3; + DHCP_answer[index_opt_answer]=1; // subnet mask + DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_subnet_mask, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + if (LAN_config->LAN_def_route_activ == 1) { + DHCP_answer[index_opt_answer]=3; // default route + DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_def_route, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - } - if (LAN_config->LAN_DNS_activ == 1) { - DHCP_answer[index_opt_answer]=6; // DNS server - DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_def_route, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + } + if (LAN_config->LAN_DNS_activ == 1) { + DHCP_answer[index_opt_answer]=6; // DNS server + DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_DNS_value, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - } - DHCP_answer[index_opt_answer]=51; //Lease Time - DHCP_answer[index_opt_answer+1]=4; - DHCP_answer[index_opt_answer+2]=0x00; - DHCP_answer[index_opt_answer+3]=0x00;//01 - DHCP_answer[index_opt_answer+4]= (DHCP_ARP_timeout & 0xFF00) >> 8;//0x00 - //DHCP_answer[index_opt_answer+5]=0x3C;//80 - DHCP_answer[index_opt_answer+5]= DHCP_ARP_timeout & 0xFF;//DHCP_ARP_timeout - index_opt_answer = index_opt_answer +6; - DHCP_answer[index_opt_answer]=54; // DHCP server IP - DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_modem_IP, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer + 6; - //DHCP_answer[index_opt_answer]=26; // Interface MTU - //DHCP_answer[index_opt_answer+1]=2; - //DHCP_answer[index_opt_answer+2]=0x03;//02 - //DHCP_answer[index_opt_answer+3]=0xE8;//40 - //index_opt_answer = index_opt_answer + 4; - //DHCP_answer[index_opt_answer]=27; // subnets local - //DHCP_answer[index_opt_answer+1]=1; - //DHCP_answer[index_opt_answer+2]=0x01; - //index_opt_answer = index_opt_answer + 3; - DHCP_answer[index_opt_answer]=255;// end - index_opt_answer = index_opt_answer + 1; - W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); - } - - if ( (message_type_client == 3) && (loc_status !=0 ) ) { // request -> ack - for (i=0; i<4; i++) { //proposed IP - DHCP_answer[i+16] = proposed_IP[i]; - } - - message_type_server = 5; - DHCP_answer[index_opt_answer]=53; // message type - DHCP_answer[index_opt_answer+1]=1; - DHCP_answer[index_opt_answer+2]=message_type_server; - index_opt_answer = index_opt_answer +3; - DHCP_answer[index_opt_answer]=1; // subnet mask - DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_subnet_mask, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - if (LAN_config->LAN_def_route_activ == 1) { - DHCP_answer[index_opt_answer]=3; // default route - DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_DNS_value, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + } + DHCP_answer[index_opt_answer]=51; //Lease Time + DHCP_answer[index_opt_answer+1]=4; + DHCP_answer[index_opt_answer+2]=0x00; + DHCP_answer[index_opt_answer+3]=0x00;//01 + DHCP_answer[index_opt_answer+4]= (DHCP_ARP_timeout & 0xFF00) >> 8;//0x00 + //DHCP_answer[index_opt_answer+5]=0x3C;//80 + DHCP_answer[index_opt_answer+5]= DHCP_ARP_timeout & 0xFF;//DHCP_ARP_timeout + index_opt_answer = index_opt_answer +6; + DHCP_answer[index_opt_answer]=54; // DHCP server IP + DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_modem_IP, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer + 6; + //DHCP_answer[index_opt_answer]=26; // Interface MTU + //DHCP_answer[index_opt_answer+1]=2; + //DHCP_answer[index_opt_answer+2]=0x03;//02 + //DHCP_answer[index_opt_answer+3]=0xE8;//40 + //index_opt_answer = index_opt_answer + 4; + //DHCP_answer[index_opt_answer]=27; // subnets local + //DHCP_answer[index_opt_answer+1]=1; + //DHCP_answer[index_opt_answer+2]=0x01; + //index_opt_answer = index_opt_answer + 3; + DHCP_answer[index_opt_answer]=255;// end + index_opt_answer = index_opt_answer + 1; + W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); + } + + if ( (message_type_client == 3) && (loc_status !=0 ) ) { // request -> ack + for (i=0; i<4; i++) { //proposed IP + DHCP_answer[i+16] = proposed_IP[i]; + } + + message_type_server = 5; + DHCP_answer[index_opt_answer]=53; // message type + DHCP_answer[index_opt_answer+1]=1; + DHCP_answer[index_opt_answer+2]=message_type_server; + index_opt_answer = index_opt_answer +3; + DHCP_answer[index_opt_answer]=1; // subnet mask + DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_subnet_mask, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + if (LAN_config->LAN_def_route_activ == 1) { + DHCP_answer[index_opt_answer]=3; // default route + DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_def_route, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - } - if (LAN_config->LAN_DNS_activ == 1) { - DHCP_answer[index_opt_answer]=6; // DNS server - DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_def_route, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + } + if (LAN_config->LAN_DNS_activ == 1) { + DHCP_answer[index_opt_answer]=6; // DNS server + DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_DNS_value, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer +6; - } - DHCP_answer[index_opt_answer]=51; //Lease Time - DHCP_answer[index_opt_answer+1]=4; - DHCP_answer[index_opt_answer+2]=0x00; - DHCP_answer[index_opt_answer+3]=0x00;//01 - DHCP_answer[index_opt_answer+4]= (DHCP_ARP_timeout & 0xFF00) >> 8;//51 - DHCP_answer[index_opt_answer+5]= DHCP_ARP_timeout & 0xFF; - index_opt_answer = index_opt_answer +6; - DHCP_answer[index_opt_answer]=54; // DHCP server IP - DHCP_answer[index_opt_answer+1]=4; - IP_int2char (LAN_config->LAN_modem_IP, (DHCP_answer + index_opt_answer + 2) ); - index_opt_answer = index_opt_answer + 6; - //DHCP_answer[index_opt_answer]=26; // Interface MTU - //DHCP_answer[index_opt_answer+1]=2; - //DHCP_answer[index_opt_answer+2]=0x03;//02 - //DHCP_answer[index_opt_answer+3]=0xE8;//40 - //index_opt_answer = index_opt_answer + 4; - //DHCP_answer[index_opt_answer]=27; // subnets local - //DHCP_answer[index_opt_answer+1]=1; - //DHCP_answer[index_opt_answer+2]=0x01; - //index_opt_answer = index_opt_answer + 3; - DHCP_answer[index_opt_answer]=255;// end - index_opt_answer = index_opt_answer + 1; - W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); - } - - if ( (message_type_client == 3) && (loc_status ==0 ) ) { //request -> NAK - //printf ("NAK NAK\r\n"); - message_type_server = 6; // NAK - DHCP_answer[index_opt_answer]=53; // message type - DHCP_answer[index_opt_answer+1]=1; - DHCP_answer[index_opt_answer+2]=message_type_server; - index_opt_answer = index_opt_answer +3; - DHCP_answer[index_opt_answer]=255;// end - index_opt_answer = index_opt_answer + 1; - W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); - } - - if ( message_type_client == 7 ) { // DHCP RELEASE - //printf ("DHCP RELEASE\r\n"); - DHCP_release (LAN_config, client_MAC); - } - } - } + IP_int2char (LAN_config->LAN_DNS_value, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer +6; + } + DHCP_answer[index_opt_answer]=51; //Lease Time + DHCP_answer[index_opt_answer+1]=4; + DHCP_answer[index_opt_answer+2]=0x00; + DHCP_answer[index_opt_answer+3]=0x00;//01 + DHCP_answer[index_opt_answer+4]= (DHCP_ARP_timeout & 0xFF00) >> 8;//51 + DHCP_answer[index_opt_answer+5]= DHCP_ARP_timeout & 0xFF; + index_opt_answer = index_opt_answer +6; + DHCP_answer[index_opt_answer]=54; // DHCP server IP + DHCP_answer[index_opt_answer+1]=4; + IP_int2char (LAN_config->LAN_modem_IP, (DHCP_answer + index_opt_answer + 2) ); + index_opt_answer = index_opt_answer + 6; + //DHCP_answer[index_opt_answer]=26; // Interface MTU + //DHCP_answer[index_opt_answer+1]=2; + //DHCP_answer[index_opt_answer+2]=0x03;//02 + //DHCP_answer[index_opt_answer+3]=0xE8;//40 + //index_opt_answer = index_opt_answer + 4; + //DHCP_answer[index_opt_answer]=27; // subnets local + //DHCP_answer[index_opt_answer+1]=1; + //DHCP_answer[index_opt_answer+2]=0x01; + //index_opt_answer = index_opt_answer + 3; + DHCP_answer[index_opt_answer]=255;// end + index_opt_answer = index_opt_answer + 1; + W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); + } + + if ( (message_type_client == 3) && (loc_status ==0 ) ) { //request -> NAK + //printf ("NAK NAK\r\n"); + message_type_server = 6; // NAK + DHCP_answer[index_opt_answer]=53; // message type + DHCP_answer[index_opt_answer+1]=1; + DHCP_answer[index_opt_answer+2]=message_type_server; + index_opt_answer = index_opt_answer +3; + DHCP_answer[index_opt_answer]=255;// end + index_opt_answer = index_opt_answer + 1; + W5500_write_TX_buffer(W5500, 3, DHCP_answer, index_opt_answer, 1); + } + + if ( message_type_client == 7 ) { // DHCP RELEASE + //printf ("DHCP RELEASE\r\n"); + DHCP_release (LAN_config, client_MAC); + } + } + } } void DHCP_ARP_print_entries(void) { - int i; - unsigned char loc_IP_char[10]; - for (i=0; i "); + int i; + unsigned char loc_IP_char[10]; + for (i=0; i "); } // *** ARP proxy and ARP resolver *** void ARP_proxy (unsigned char* ARP_req_packet, int size) { - int answer_needed = 0; - int i; - int is_inside_subnet = 0; - int is_inside_client_range = 0; - unsigned long int ARP_client_IP; - unsigned long int ARP_requested_IP; - unsigned char ARP_client_MAC[6]; - - unsigned char ARP_answ_packet[50] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // dest MAC - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source MAC - 0x08, 0x06, // Ethtype ARP - 0x00, 0x01, // HW type Ethernet - 0x08, 0x00, // protocol IPv4 - 0x06, // HW addr size - 0x04, // protocol size - 0x00, 0x02 // ARP opcode "reply" - }; - - ARP_client_IP = IP_char2int (ARP_req_packet+28); //in request : client = sender - ARP_requested_IP = IP_char2int (ARP_req_packet+38); //in request : server = target - for (i=0; i<6; i++) { - ARP_client_MAC[i] = ARP_req_packet[22+i]; // in request : client = sender - } - - // determines if modem should reply or not - if (ARP_requested_IP != LAN_conf_applied.LAN_modem_IP) { //only replies to non-modem IP - - if (is_TDMA_master == 1) { - //TDMA Master (and FDD down) answers to all IP in radio range - if ( (ARP_requested_IP >= CONF_radio_IP_start) && (ARP_requested_IP < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { - answer_needed = 1; - } - } - else { //TDMA Slave answers to IP inside subnet, but which dont belong to it's own range - if ( (ARP_requested_IP & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { - is_inside_subnet = 1; - } - if ( (ARP_requested_IP >= LAN_conf_applied.DHCP_range_start) && (ARP_requested_IP < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { - is_inside_client_range = 1; - } - if ( (is_inside_subnet == 1) && (is_inside_client_range == 0) ) { - answer_needed = 1; - } - } - } - - if (answer_needed) { - for (i=0; i<6; i++) { // Destination MAC - ARP_answ_packet[i] = ARP_client_MAC[i]; - } - for (i=0; i<6; i++) { // Source MAC - ARP_answ_packet[i+6] = CONF_modem_MAC[i]; - } - for (i=0; i<6; i++) { // ARP Sender MAC - ARP_answ_packet[i+22] = CONF_modem_MAC[i]; - } - //IP_int2char (LAN_config.LAN_modem_IP, (ARP_answ_packet + 28) ); // ARP sender IP - IP_int2char (ARP_requested_IP, (ARP_answ_packet + 28) ); // ARP sender IP - for (i=0; i<6; i++) { // ARP Target MAC - ARP_answ_packet[i+32] = ARP_client_MAC[i]; - } - IP_int2char (ARP_client_IP, (ARP_answ_packet + 38) ); //ARP target IP - - W5500_write_TX_buffer(W5500_p1, 0, ARP_answ_packet, 42, 0); - } + int answer_needed = 0; + int i; + int is_inside_subnet = 0; + int is_inside_client_range = 0; + unsigned long int ARP_client_IP; + unsigned long int ARP_requested_IP; + unsigned char ARP_client_MAC[6]; + + unsigned char ARP_answ_packet[50] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // dest MAC + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source MAC + 0x08, 0x06, // Ethtype ARP + 0x00, 0x01, // HW type Ethernet + 0x08, 0x00, // protocol IPv4 + 0x06, // HW addr size + 0x04, // protocol size + 0x00, 0x02 // ARP opcode "reply" + }; + + ARP_client_IP = IP_char2int (ARP_req_packet+28); //in request : client = sender + ARP_requested_IP = IP_char2int (ARP_req_packet+38); //in request : server = target + for (i=0; i<6; i++) { + ARP_client_MAC[i] = ARP_req_packet[22+i]; // in request : client = sender + } + + // determines if modem should reply or not + if (ARP_requested_IP != LAN_conf_applied.LAN_modem_IP) { //only replies to non-modem IP + + if (is_TDMA_master == 1) { + //TDMA Master (and FDD down) answers to all IP in radio range + if ( (ARP_requested_IP >= CONF_radio_IP_start) && (ARP_requested_IP < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { + answer_needed = 1; + } + } + else { //TDMA Slave answers to IP inside subnet, but which dont belong to it's own range + if ( (ARP_requested_IP & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { + is_inside_subnet = 1; + } + if ( (ARP_requested_IP >= LAN_conf_applied.DHCP_range_start) && (ARP_requested_IP < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { + is_inside_client_range = 1; + } + if ( (is_inside_subnet == 1) && (is_inside_client_range == 0) ) { + answer_needed = 1; + } + } + } + + if (answer_needed) { + for (i=0; i<6; i++) { // Destination MAC + ARP_answ_packet[i] = ARP_client_MAC[i]; + } + for (i=0; i<6; i++) { // Source MAC + ARP_answ_packet[i+6] = CONF_modem_MAC[i]; + } + for (i=0; i<6; i++) { // ARP Sender MAC + ARP_answ_packet[i+22] = CONF_modem_MAC[i]; + } + //IP_int2char (LAN_config.LAN_modem_IP, (ARP_answ_packet + 28) ); // ARP sender IP + IP_int2char (ARP_requested_IP, (ARP_answ_packet + 28) ); // ARP sender IP + for (i=0; i<6; i++) { // ARP Target MAC + ARP_answ_packet[i+32] = ARP_client_MAC[i]; + } + IP_int2char (ARP_client_IP, (ARP_answ_packet + 38) ); //ARP target IP + + W5500_write_TX_buffer(W5500_p1, 0, ARP_answ_packet, 42, 0); + } } void ARP_client_request (unsigned long int IP_requested) { - unsigned char ARP_packet[50] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // dest MAC - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source MAC - 0x08, 0x06, // Ethtype ARP - 0x00, 0x01, // HW type Ethernet - 0x08, 0x00, // protocol IPv4 - 0x06, // HW addr size - 0x04, // protocol size - 0x00, 0x01 // ARP opcode "request" - }; - int i; - for (i=0; i<6; i++) { // source MAC - ARP_packet[i+6] = CONF_modem_MAC[i]; - } - for (i=0; i<6; i++) { // ARP sender MAC - ARP_packet[i+22] = CONF_modem_MAC[i]; - } - IP_int2char (LAN_conf_applied.LAN_modem_IP, (ARP_packet + 28) ); //ARP sender IP - for (i=0; i<6; i++) { // target MAC : unknown - ARP_packet[i+32] = 0; - } - IP_int2char (IP_requested, (ARP_packet + 38) ); //ARP Target IP - W5500_write_TX_buffer(W5500_p1, 0, ARP_packet, 42, 0); + unsigned char ARP_packet[50] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // dest MAC + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source MAC + 0x08, 0x06, // Ethtype ARP + 0x00, 0x01, // HW type Ethernet + 0x08, 0x00, // protocol IPv4 + 0x06, // HW addr size + 0x04, // protocol size + 0x00, 0x01 // ARP opcode "request" + }; + int i; + for (i=0; i<6; i++) { // source MAC + ARP_packet[i+6] = CONF_modem_MAC[i]; + } + for (i=0; i<6; i++) { // ARP sender MAC + ARP_packet[i+22] = CONF_modem_MAC[i]; + } + IP_int2char (LAN_conf_applied.LAN_modem_IP, (ARP_packet + 28) ); //ARP sender IP + for (i=0; i<6; i++) { // target MAC : unknown + ARP_packet[i+32] = 0; + } + IP_int2char (IP_requested, (ARP_packet + 38) ); //ARP Target IP + W5500_write_TX_buffer(W5500_p1, 0, ARP_packet, 42, 0); } void ARP_client_answer_treatment (unsigned char* ARP_RX_packet, int size) { - unsigned long int ARP_sender_IP; - unsigned long int ARP_target_IP; - unsigned char ARP_sender_MAC[6]; - int entry_already_exists = 0; - int i_existing_entry = 0; - int i_free_entry = 255; - int i; - - ARP_sender_IP = IP_char2int (ARP_RX_packet+28); - ARP_target_IP = IP_char2int (ARP_RX_packet+38); - for (i=0; i<6; i++) { - ARP_sender_MAC[i] = ARP_RX_packet[22+i]; - } - if (ARP_target_IP == LAN_conf_applied.LAN_modem_IP) { //if ARP reply is for us - //first look for existing entry - //printf("ARP reply is for us IP %X\r\n", ARP_sender_IP); - entry_already_exists = 0; - for (i=0; i=0; i--) { - if ( DHCP_ARP_status[i] == 0 ) { - i_free_entry = i; - } - } - if (i_free_entry < DHCP_ARP_tab_size) {// free entry exists - for (i=0; i<6; i++) { - DHCP_ARP_MAC[i_free_entry][i] = ARP_sender_MAC[i]; - } - DHCP_ARP_status[i_free_entry] = 2; // valid entry - DHCP_ARP_IP[i_free_entry] = ARP_sender_IP; - DHCP_ARP_date[i_free_entry] = GLOBAL_timer.read_us(); - } - } - } - flush_temp_Eth_buffer (ARP_sender_IP); + unsigned long int ARP_sender_IP; + unsigned long int ARP_target_IP; + unsigned char ARP_sender_MAC[6]; + int entry_already_exists = 0; + int i_existing_entry = 0; + int i_free_entry = 255; + int i; + + ARP_sender_IP = IP_char2int (ARP_RX_packet+28); + ARP_target_IP = IP_char2int (ARP_RX_packet+38); + for (i=0; i<6; i++) { + ARP_sender_MAC[i] = ARP_RX_packet[22+i]; + } + if (ARP_target_IP == LAN_conf_applied.LAN_modem_IP) { //if ARP reply is for us + //first look for existing entry + //printf("ARP reply is for us IP %X\r\n", ARP_sender_IP); + entry_already_exists = 0; + for (i=0; i=0; i--) { + if ( DHCP_ARP_status[i] == 0 ) { + i_free_entry = i; + } + } + if (i_free_entry < DHCP_ARP_tab_size) {// free entry exists + for (i=0; i<6; i++) { + DHCP_ARP_MAC[i_free_entry][i] = ARP_sender_MAC[i]; + } + DHCP_ARP_status[i_free_entry] = 2; // valid entry + DHCP_ARP_IP[i_free_entry] = ARP_sender_IP; + DHCP_ARP_date[i_free_entry] = GLOBAL_timer.read_us(); + } + } + } + flush_temp_Eth_buffer (ARP_sender_IP); } void ARP_RX_packet_treatment (unsigned char* ARP_RX_packet, int size) { - unsigned int ARP_protocol_type; - unsigned int ARP_opcode; - unsigned long int ARP_sender_IP; - unsigned long int ARP_target_IP; - ARP_protocol_type = ARP_RX_packet[16]*0x100 + ARP_RX_packet[17]; - ARP_opcode = ARP_RX_packet[20]*0x100 + ARP_RX_packet[21]; - if ( (ARP_protocol_type == 0x0800) && (ARP_opcode == 0x0001) ) { // request - //printf ("ARP request\r\n"); - ARP_sender_IP = IP_char2int (ARP_RX_packet+28); - ARP_target_IP = IP_char2int (ARP_RX_packet+38); - if (ARP_sender_IP != ARP_target_IP) {//ignores gratuitous ARP request - //printf ("real ARP request\r\n"); - ARP_proxy(ARP_RX_packet, size); - } - else { - //printf ("gratuitous!\r\n"); - } - } - if ( (ARP_protocol_type == 0x0800) && (ARP_opcode == 0x0002) ) { // reply - //printf ("ARP reply\r\n"); - if ( (LAN_conf_applied.DHCP_server_active == 0) || (is_TDMA_master) ){//only active if modem is no DHCP server - ARP_client_answer_treatment (ARP_RX_packet, size); - } - } + unsigned int ARP_protocol_type; + unsigned int ARP_opcode; + unsigned long int ARP_sender_IP; + unsigned long int ARP_target_IP; + ARP_protocol_type = ARP_RX_packet[16]*0x100 + ARP_RX_packet[17]; + ARP_opcode = ARP_RX_packet[20]*0x100 + ARP_RX_packet[21]; + if ( (ARP_protocol_type == 0x0800) && (ARP_opcode == 0x0001) ) { // request + //printf ("ARP request\r\n"); + ARP_sender_IP = IP_char2int (ARP_RX_packet+28); + ARP_target_IP = IP_char2int (ARP_RX_packet+38); + if (ARP_sender_IP != ARP_target_IP) {//ignores gratuitous ARP request + //printf ("real ARP request\r\n"); + ARP_proxy(ARP_RX_packet, size); + } + else { + //printf ("gratuitous!\r\n"); + } + } + if ( (ARP_protocol_type == 0x0800) && (ARP_opcode == 0x0002) ) { // reply + //printf ("ARP reply\r\n"); + if ( (LAN_conf_applied.DHCP_server_active == 0) || (is_TDMA_master) ){//only active if modem is no DHCP server + ARP_client_answer_treatment (ARP_RX_packet, size); + } + } } void DHCP_ARP_periodic_free_table () { - int i; - unsigned int loc_age; - for (i=0; i 1000000 * DHCP_ARP_timeout) ) { - DHCP_ARP_status[i] = 3; - } - } + int i; + unsigned int loc_age; + for (i=0; i 1000000 * DHCP_ARP_timeout) ) { + DHCP_ARP_status[i] = 3; + } + } } // *** generic functions *** int lookfor_MAC_from_IP (unsigned char* MAC_out, unsigned long int IP_addr) { - int result = 0; - int i; - int i_found = 300; - unsigned int age_loc=0; - if ( (LAN_conf_applied.DHCP_server_active == 1) && (is_TDMA_master == 0) ) { //resolution for DHCP - i_found = 300; - for (i=0; iinterrupt)==0) { - W5500_write_byte(W5500, 0x0002, 1, 0xFF);//ack interrupt - more_to_read=1; - } - if ((more_to_read == 1)) { - RX_size = W5500_read_received_size(W5500, 0); - //if (RX_size > DEBUG_max_rx_size_w5500) {//!!! - // DEBUG_max_rx_size_w5500 = RX_size;//!!! - // printf("max buffer:%i\r\n", DEBUG_max_rx_size_w5500);//!!! - //}//!!! - if (RX_size > 0) { - answer=1; + int answer=0; + unsigned char RX_data[1600];//1600 + unsigned int RX_port=0; + unsigned char RX_proto; + unsigned long int RX_dest_IP=0; + //unsigned char* RX_Eth_pckt; + //static int match_RTP_index[12] = {8, 9, 10, 11, 12, 13}; //first ping tests : TX MAC filter + + static int more_to_read = 0; + + int RX_size=0; + int mac_size=0; + // int i; + //int match_RTP = 1; + unsigned int ethertype; + if (*(W5500->interrupt)==0) { + W5500_write_byte(W5500, 0x0002, 1, 0xFF);//ack interrupt + more_to_read=1; + } + if ((more_to_read == 1)) { + RX_size = W5500_read_received_size(W5500, 0); + //if (RX_size > DEBUG_max_rx_size_w5500) {//!!! + // DEBUG_max_rx_size_w5500 = RX_size;//!!! + // printf("max buffer:%i\r\n", DEBUG_max_rx_size_w5500);//!!! + //}//!!! + if (RX_size > 0) { + answer=1; - mac_size = W5500_read_MAC_pckt(W5500, 0, RX_data); - if (RX_size > mac_size) { - more_to_read = 1; - } else { - more_to_read = 0; - } + mac_size = W5500_read_MAC_pckt(W5500, 0, RX_data); + if (RX_size > mac_size) { + more_to_read = 1; + } else { + more_to_read = 0; + } - // Check if RTP packet - RX_Eth_IPv4_counter++; - //match_RTP = 1; - //for (i=0; i<=6; i++) { - // if (RX_data[match_RTP_index[i]] != match_RTP_value[is_TDMA_master][i]) { - // match_RTP = 0; - // } - - //} - // FOR FUTURE VIRTUAL CHANNEL - //if (match_RTP==1) { - // W5500_write_TX_buffer(W5500, 2, RX_data+44, mac_size-44, 0); - //} - - ethertype = RX_data[14]*0x100 + RX_data[15]; - - if (ethertype == 0x0806) { //ARP packet received - //printf("ARP packet received!\r\n"); - if ((is_TDMA_master == 0)||(CONF_master_FDD<2)) { - ARP_RX_packet_treatment (RX_data+2, mac_size-2); - } - } - - if (ethertype == 0x0800) { // IPv4 packet - RX_port = 0; - RX_proto = 0; - RX_dest_IP = 0; - if ( (is_TDMA_master==1) && (CONF_master_FDD == 1) ) {//master down - //RX_Eth_pckt = RX_data+2; - RX_port = (RX_data[38] << 8) + RX_data[39]; - RX_proto = RX_data[25];//11 for UDP - RX_dest_IP = IP_char2int(RX_data+32); - } - if ( (RX_proto == 0x11) && (RX_dest_IP == LAN_conf_applied.LAN_modem_IP) && (RX_port == 0x1A3C) ) { // data for FDD down - //printf("RX_from_Eth\r\n"); - FDDdown_RX_pckt_treat(RX_data+44, mac_size-44); - } else { - //printf("RXeth %i\r\n", mac_size-2); - IPv4_to_radio (RX_data+2, mac_size-2); - //Eth_pause_frame_TX(10);//!!! - } - } - - - } - } - return answer; + // Check if RTP packet + RX_Eth_IPv4_counter++; + //match_RTP = 1; + //for (i=0; i<=6; i++) { + // if (RX_data[match_RTP_index[i]] != match_RTP_value[is_TDMA_master][i]) { + // match_RTP = 0; + // } + + //} + // FOR FUTURE VIRTUAL CHANNEL + //if (match_RTP==1) { + // W5500_write_TX_buffer(W5500, 2, RX_data+44, mac_size-44, 0); + //} + + ethertype = RX_data[14]*0x100 + RX_data[15]; + + if (ethertype == 0x0806) { //ARP packet received + //printf("ARP packet received!\r\n"); + if ((is_TDMA_master == 0)||(CONF_master_FDD<2)) { + ARP_RX_packet_treatment (RX_data+2, mac_size-2); + } + } + + if (ethertype == 0x0800) { // IPv4 packet + RX_port = 0; + RX_proto = 0; + RX_dest_IP = 0; + if ( (is_TDMA_master==1) && (CONF_master_FDD == 1) ) {//master down + //RX_Eth_pckt = RX_data+2; + RX_port = (RX_data[38] << 8) + RX_data[39]; + RX_proto = RX_data[25];//11 for UDP + RX_dest_IP = IP_char2int(RX_data+32); + } + if ( (RX_proto == 0x11) && (RX_dest_IP == LAN_conf_applied.LAN_modem_IP) && (RX_port == 0x1A3C) ) { // data for FDD down + //printf("RX_from_Eth\r\n"); + FDDdown_RX_pckt_treat(RX_data+44, mac_size-44); + } else { + //printf("RXeth %i\r\n", mac_size-2); + IPv4_to_radio (RX_data+2, mac_size-2); + //Eth_pause_frame_TX(10);//!!! + } + } + + + } + } + return answer; } void Eth_pause_frame_TX(unsigned int time) { - int i; - unsigned char pause_frame[70] = { - 0x01, 0x80, 0xC2, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x08, 0x00, 0x01, 0x4E, 0x70,/* 0x17, 0x70 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - for (i=0; i<6; i++) { - pause_frame[i+6] = CONF_modem_MAC[i]; - } - W5500_write_TX_buffer(W5500_p1, 0, pause_frame, 60, 0); + int i; + unsigned char pause_frame[70] = { + 0x01, 0x80, 0xC2, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x08, 0x00, 0x01, 0x4E, 0x70,/* 0x17, 0x70 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + for (i=0; i<6; i++) { + pause_frame[i+6] = CONF_modem_MAC[i]; + } + W5500_write_TX_buffer(W5500_p1, 0, pause_frame, 60, 0); } void IPv4_to_radio (unsigned char* RX_Eth_frame, int size) { - int i; - unsigned long int dest_IP_addr; - int MAC_dest_match = 1; - int is_inside_subnet = 0; - int is_inside_client_range = 0; - unsigned char loc_client_ID; - int radio_tx_need; - for (i=0; i<6; i++) { - if (RX_Eth_frame[i] != CONF_modem_MAC[i]) { - MAC_dest_match = 0; - } - } - radio_tx_need = 0; - if (MAC_dest_match == 1) {//we only take frame with destination = modem_MAC, not broadcast or multicast - dest_IP_addr = IP_char2int(RX_Eth_frame+30); - - if ( (is_TDMA_master == 1) && (dest_IP_addr != LAN_conf_applied.LAN_modem_IP) ) { // TDMA Master - if ( (dest_IP_addr >= CONF_radio_IP_start) && (dest_IP_addr < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { - loc_client_ID = lookfor_client_ID_from_IP (dest_IP_addr); - //printf ("IP %X is client %i\r\n", dest_IP_addr, loc_client_ID); - if (loc_client_ID < 250) { - radio_tx_need = 1; - - } - } - } - if ( (is_TDMA_master == 0) && (dest_IP_addr != LAN_conf_applied.LAN_modem_IP) ) { // TDMA Client - if ( (dest_IP_addr & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { - is_inside_subnet = 1; - } - if ( (dest_IP_addr >= LAN_conf_applied.DHCP_range_start) && (dest_IP_addr < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { - is_inside_client_range = 1; - } - //printf ("inside subnet:%i inside_DHCP%i\r\n", is_inside_subnet, is_inside_client_range); - // inside subnet but outside radio range -> to master - if ( (is_inside_subnet == 1) && (is_inside_client_range == 0) ) { - loc_client_ID = my_radio_client_ID; - radio_tx_need = 1; - } - // outside subnet and IP gateway active -> to master - if ( (is_inside_subnet == 0) && (LAN_conf_applied.LAN_def_route_activ == 1) ) { - loc_client_ID = my_radio_client_ID; - radio_tx_need = 1; - } - } + int i; + unsigned long int dest_IP_addr; + int MAC_dest_match = 1; + int is_inside_subnet = 0; + int is_inside_client_range = 0; + unsigned char loc_client_ID; + int radio_tx_need; + for (i=0; i<6; i++) { + if (RX_Eth_frame[i] != CONF_modem_MAC[i]) { + MAC_dest_match = 0; + } + } + radio_tx_need = 0; + if (MAC_dest_match == 1) {//we only take frame with destination = modem_MAC, not broadcast or multicast + dest_IP_addr = IP_char2int(RX_Eth_frame+30); + + if ( (is_TDMA_master == 1) && (dest_IP_addr != LAN_conf_applied.LAN_modem_IP) ) { // TDMA Master + if ( (dest_IP_addr >= CONF_radio_IP_start) && (dest_IP_addr < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { + loc_client_ID = lookfor_client_ID_from_IP (dest_IP_addr); + //printf ("IP %X is client %i\r\n", dest_IP_addr, loc_client_ID); + if (loc_client_ID < 250) { + radio_tx_need = 1; + + } + } + } + if ( (is_TDMA_master == 0) && (dest_IP_addr != LAN_conf_applied.LAN_modem_IP) ) { // TDMA Client + if ( (dest_IP_addr & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { + is_inside_subnet = 1; + } + if ( (dest_IP_addr >= LAN_conf_applied.DHCP_range_start) && (dest_IP_addr < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { + is_inside_client_range = 1; + } + //printf ("inside subnet:%i inside_DHCP%i\r\n", is_inside_subnet, is_inside_client_range); + // inside subnet but outside radio range -> to master + if ( (is_inside_subnet == 1) && (is_inside_client_range == 0) ) { + loc_client_ID = my_radio_client_ID; + radio_tx_need = 1; + } + // outside subnet and IP gateway active -> to master + if ( (is_inside_subnet == 0) && (LAN_conf_applied.LAN_def_route_activ == 1) ) { + loc_client_ID = my_radio_client_ID; + radio_tx_need = 1; + } + } - if ( (radio_tx_need) && (my_client_radio_connexion_state == 2) ) { - segment_and_push(RX_Eth_frame + 14, size - 14, loc_client_ID, 0x02); //0x02 is IPv4 access protocol - //printf("seg&push %i\r\n", size - 14); - } - } + if ( (radio_tx_need) && (my_client_radio_connexion_state == 2) ) { + segment_and_push(RX_Eth_frame + 14, size - 14, loc_client_ID, 0x02); //0x02 is IPv4 access protocol + //printf("seg&push %i\r\n", size - 14); + } + } } void IPv4_from_radio (unsigned char* RX_eth_frame, int RX_size) { //Rx size includes ethernet header - unsigned long int dest_IP_addr; - unsigned long int LAN_dest_IP; - int local_size; - int dest_MAC_found; - int is_inside_subnet = 0; - int is_inside_radio_range = 0; - unsigned char loc_client_ID; - int i; - //dest_IP_addr = IP_char2int(RX_radio_frame+16) - int eth_TX_need = 0; - int radio_tx_need = 0; - dest_IP_addr = IP_char2int(RX_eth_frame + 30); - - local_size = 0x100*RX_eth_frame[16] + RX_eth_frame[17]; - //printf("size IPv4 : %i\r\n", local_size); - - //printf (" IPv4 radio RX\r\n"); - if (is_TDMA_master == 1) { // TDMA Master - if ( (dest_IP_addr & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { - is_inside_subnet = 1; - } - if ( (dest_IP_addr >= CONF_radio_IP_start) && (dest_IP_addr < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { - is_inside_radio_range = 1; - } - //printf("IPv4 from R: inside subnet:%i inside_radio:%i\r\n", is_inside_subnet, is_inside_radio_range); - // destinated to IP on LAN - if ( (is_inside_subnet == 1) && (is_inside_radio_range == 0) ) { - eth_TX_need = 1; - LAN_dest_IP = dest_IP_addr; - } - // destinated to gateway (out of subnet) - if ( (is_inside_subnet == 0) && (LAN_conf_applied.LAN_def_route_activ == 1) ) { - eth_TX_need = 1; - LAN_dest_IP = LAN_conf_applied.LAN_def_route; - } - //forward to another radio client - if (is_inside_radio_range) { - loc_client_ID = lookfor_client_ID_from_IP (dest_IP_addr); - if (loc_client_ID < 250) { - radio_tx_need = 1; - } - } - } - if (is_TDMA_master == 0) { // TDMA client - // Checks if dest IP is inside local range - if ( (dest_IP_addr >= LAN_conf_applied.DHCP_range_start) && (dest_IP_addr < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { - eth_TX_need = 1; - LAN_dest_IP = dest_IP_addr; - } - } - // transmit to Ethernet - if ( (eth_TX_need) && (local_size < 1510) ) { - //printf("IPv4 Eth TX\r\n"); - for (i=0; i<6; i++) { - RX_eth_frame[i+6] = CONF_modem_MAC[i]; - } - RX_eth_frame[12] = 0x08; // Ethertype IPv4 - RX_eth_frame[13] = 0x00; - dest_MAC_found = lookfor_MAC_from_IP (RX_eth_frame, LAN_dest_IP); - if (dest_MAC_found) { - W5500_write_TX_buffer(W5500_p1, 0, RX_eth_frame, local_size + 14, 0); - //RX_radio_IPv4_counter++; - } - else { - temp_Eth_buff_IP = LAN_dest_IP; - temp_Eth_buff_size = local_size + 14; - memcpy (temp_Eth_buffer, RX_eth_frame, temp_Eth_buff_size); - } - } - // transmit to radio - if (radio_tx_need) { - segment_and_push(RX_eth_frame + 14, local_size, loc_client_ID, 0x02); //0x02 is IPv4 access protocol - //TX_radio_IPv4_counter++; - } + unsigned long int dest_IP_addr; + unsigned long int LAN_dest_IP; + int local_size; + int dest_MAC_found; + int is_inside_subnet = 0; + int is_inside_radio_range = 0; + unsigned char loc_client_ID; + int i; + //dest_IP_addr = IP_char2int(RX_radio_frame+16) + int eth_TX_need = 0; + int radio_tx_need = 0; + dest_IP_addr = IP_char2int(RX_eth_frame + 30); + + local_size = 0x100*RX_eth_frame[16] + RX_eth_frame[17]; + //printf("size IPv4 : %i\r\n", local_size); + + //printf (" IPv4 radio RX\r\n"); + if (is_TDMA_master == 1) { // TDMA Master + if ( (dest_IP_addr & LAN_conf_applied.LAN_subnet_mask) == (LAN_conf_applied.LAN_modem_IP & LAN_conf_applied.LAN_subnet_mask) ) { + is_inside_subnet = 1; + } + if ( (dest_IP_addr >= CONF_radio_IP_start) && (dest_IP_addr < (CONF_radio_IP_start + CONF_radio_IP_size) ) ) { + is_inside_radio_range = 1; + } + //printf("IPv4 from R: inside subnet:%i inside_radio:%i\r\n", is_inside_subnet, is_inside_radio_range); + // destinated to IP on LAN + if ( (is_inside_subnet == 1) && (is_inside_radio_range == 0) ) { + eth_TX_need = 1; + LAN_dest_IP = dest_IP_addr; + } + // destinated to gateway (out of subnet) + if ( (is_inside_subnet == 0) && (LAN_conf_applied.LAN_def_route_activ == 1) ) { + eth_TX_need = 1; + LAN_dest_IP = LAN_conf_applied.LAN_def_route; + } + //forward to another radio client + if (is_inside_radio_range) { + loc_client_ID = lookfor_client_ID_from_IP (dest_IP_addr); + if (loc_client_ID < 250) { + radio_tx_need = 1; + } + } + } + if (is_TDMA_master == 0) { // TDMA client + // Checks if dest IP is inside local range + if ( (dest_IP_addr >= LAN_conf_applied.DHCP_range_start) && (dest_IP_addr < (LAN_conf_applied.DHCP_range_start + LAN_conf_applied.DHCP_range_size)) ) { + eth_TX_need = 1; + LAN_dest_IP = dest_IP_addr; + } + } + // transmit to Ethernet + if ( (eth_TX_need) && (local_size < 1510) ) { + //printf("IPv4 Eth TX\r\n"); + for (i=0; i<6; i++) { + RX_eth_frame[i+6] = CONF_modem_MAC[i]; + } + RX_eth_frame[12] = 0x08; // Ethertype IPv4 + RX_eth_frame[13] = 0x00; + dest_MAC_found = lookfor_MAC_from_IP (RX_eth_frame, LAN_dest_IP); + if (dest_MAC_found) { + W5500_write_TX_buffer(W5500_p1, 0, RX_eth_frame, local_size + 14, 0); + //RX_radio_IPv4_counter++; + } + else { + temp_Eth_buff_IP = LAN_dest_IP; + temp_Eth_buff_size = local_size + 14; + memcpy (temp_Eth_buffer, RX_eth_frame, temp_Eth_buff_size); + } + } + // transmit to radio + if (radio_tx_need) { + segment_and_push(RX_eth_frame + 14, local_size, loc_client_ID, 0x02); //0x02 is IPv4 access protocol + //TX_radio_IPv4_counter++; + } } void flush_temp_Eth_buffer(unsigned long int loc_IP) { - if (temp_Eth_buff_size > 0) { - if (loc_IP == temp_Eth_buff_IP) { - lookfor_MAC_from_IP (temp_Eth_buffer, loc_IP); //puts MAC inside Eth - W5500_write_TX_buffer(W5500_p1, 0, temp_Eth_buffer, temp_Eth_buff_size, 0); - //RX_radio_IPv4_counter++; - } - temp_Eth_buff_size = 0; - } + if (temp_Eth_buff_size > 0) { + if (loc_IP == temp_Eth_buff_IP) { + lookfor_MAC_from_IP (temp_Eth_buffer, loc_IP); //puts MAC inside Eth + W5500_write_TX_buffer(W5500_p1, 0, temp_Eth_buffer, temp_Eth_buff_size, 0); + //RX_radio_IPv4_counter++; + } + temp_Eth_buff_size = 0; + } } unsigned char lookfor_client_ID_from_IP(unsigned long int IP_addr) { - unsigned char i, i_found; - unsigned long int last_IP; - i_found = 250; - - for (i=0; i= CONF_radio_addr_table_IP_begin[i]) && (IP_addr < last_IP) ) { - i_found = i; - } - } - return i_found; + unsigned char i, i_found; + unsigned long int last_IP; + i_found = 250; + + for (i=0; i= CONF_radio_addr_table_IP_begin[i]) && (IP_addr < last_IP) ) { + i_found = i; + } + } + return i_found; } diff --git a/NPR_14/source/HMI_telnet.cpp b/NPR_14/source/HMI_telnet.cpp index 2a4caab..75ba8b0 100644 --- a/NPR_14/source/HMI_telnet.cpp +++ b/NPR_14/source/HMI_telnet.cpp @@ -39,390 +39,390 @@ static int slow_counter = 0; static unsigned int telnet_last_activity; int telnet_loop (W5500_chip* W5500) { - static unsigned char previous_state = 0; - unsigned char RX_data[100]; - unsigned char TX_data[100]; - unsigned char current_state; - unsigned int timer_snapshot; - char loc_char; - int RX_size = 0; - int i, j; - int result; + static unsigned char previous_state = 0; + unsigned char RX_data[100]; + unsigned char TX_data[100]; + unsigned char current_state; + unsigned int timer_snapshot; + char loc_char; + int RX_size = 0; + int i, j; + int result; - result=0; - - current_state = W5500_read_byte(W5500, 0x0003, 0x05); - //printf("state: %x\r\n", current_state); - if ((current_state == 0x17) && (previous_state != 0x17)) { - W5500_read_long(W5500, 0x000C, 0x05, RX_data, 4); - printf("\r\n\r\nnew telnet connexion from %i.%i.%i.%i\r\nserial inactive...\r\n", RX_data[0], RX_data[1], RX_data[2], RX_data[3]); - fflush(stdout); - //TX_data[0] = 0xFF; //IAC - //TX_data[1] = 0xFB; //WILL FB DO FD - //TX_data[2] = 1; //echo 1 RTCE 7 - //TX_data[3] = 0; - TX_data[0] = 0xFF; //IAC - TX_data[1] = 0xFB; //WILL - TX_data[2] = 0x01; //Echo - //TX_data[3] = 0; - TX_data[3] = 0xFF; //IAC - TX_data[4] = 0xFD; //DO - TX_data[5] = 0x03; //Suppr GA - TX_data[6] = 0xFF; //IAC - TX_data[7] = 0xFB; //WILL - TX_data[8] = 0x03; //Suppr GA - TX_data[9] = 0; - strcat((char*)TX_data, "NPR modem\r\nready> "); - W5500_write_TX_buffer (W5500, 1, TX_data, 27, 0); //27 - //HMI_printf("ready>"); - is_telnet_opened = 1; - current_rx_line_count = 0; - echo_ON = 1; - display_status_ongoing = 0; - display_who_ongoing = 0; - telnet_last_activity = GLOBAL_timer.read_us(); - } - - if (current_state==0x1C) { // close wait to close - W5500_write_byte(W5500, 0x0001, 0x05, 0x10); - printf("telnet connexion closed\r\nready> "); - fflush(stdout); - is_telnet_opened = 0; - current_rx_line_count = 0; - echo_ON = 1; - display_status_ongoing = 0; - display_who_ongoing = 0; - } - - if (current_state==0x00) { //closed to open - W5500_write_byte(W5500, 0x0001, 0x05, 0x01); - //printf("open \r\n"); - result=1; - } - - if (current_state==0x13) { //opened to listen - W5500_write_byte(W5500, 0x0001, 0x05, 0x02); - //printf("listen \r\n"); - } - previous_state = current_state; - if (is_telnet_opened) { - RX_size = W5500_read_received_size(W5500, 1); - timer_snapshot = GLOBAL_timer.read_us(); - if ((timer_snapshot - telnet_last_activity) > 300000000) { //300000000 - //HMI_printf("Telnet inactivity timeout. Force exit.\r\n"); - W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP - is_telnet_opened = 0; - echo_ON = 1; - display_status_ongoing = 0; - display_who_ongoing = 0; - printf("telnet connexion closed\r\nready> "); - fflush(stdout); - } - //timeout - } - if (RX_size > 0) { - telnet_last_activity = GLOBAL_timer.read_us(); - result=1; - W5500_read_RX_buffer(W5500, 1, RX_data, RX_size); - RX_data[RX_size] = 0; - i = 0; - j = 0; - while (i < RX_size) { - loc_char = (char)RX_data[i]; - //printf("%02X %c\r\n", loc_char, loc_char); - if ( (loc_char >= 0x20) && (loc_char <= 0x7E) ) {//displayable char - if ( (current_rx_line_count < 98) && (echo_ON) ) { - TX_data[j]=RX_data[i]; - i++; - j++; - current_rx_line[current_rx_line_count] = loc_char; - current_rx_line_count++; - } else { - i++; - } - } - else { // special char - if (loc_char == 0xFF) {//IAC - if (RX_data[i+1] == 244) {//ctrl+C - HMI_cancel_current(); - } - i = i + 3; - } - else if ( ( (loc_char == 0x08) || (loc_char == 0x7F) ) && (echo_ON) ) { //backspace - i++; - - if (current_rx_line_count>0) { - current_rx_line_count--; - TX_data[j] = 0x08; - TX_data[j+1] = 0x20; - TX_data[j+2] = 0x08; - j=j+3; - } - } - else if ( (loc_char == 0x0D) && (echo_ON) ){ //end of line - TX_data[j] = 0x0D; - TX_data[j+1] = 0x0A; - i++; - j = j + 2; - current_rx_line[current_rx_line_count] = 0;//null termination - current_rx_line_count++; - W5500_write_TX_buffer (W5500, 1, TX_data, j, 0); - j = 0; - HMI_line_parse (current_rx_line, current_rx_line_count); - current_rx_line_count = 0; - } - else if (loc_char == 0x03) { //ctrl + C - HMI_cancel_current(); - //printf("CTRL + C\r\n"); - i++; - } else { - i++; - } - } - } - if (j > 0) { - W5500_write_TX_buffer (W5500, 1, TX_data, j, 0); - } - //printf("\r\n"); - } - return result; + result=0; + + current_state = W5500_read_byte(W5500, 0x0003, 0x05); + //printf("state: %x\r\n", current_state); + if ((current_state == 0x17) && (previous_state != 0x17)) { + W5500_read_long(W5500, 0x000C, 0x05, RX_data, 4); + printf("\r\n\r\nnew telnet connexion from %i.%i.%i.%i\r\nserial inactive...\r\n", RX_data[0], RX_data[1], RX_data[2], RX_data[3]); + fflush(stdout); + //TX_data[0] = 0xFF; //IAC + //TX_data[1] = 0xFB; //WILL FB DO FD + //TX_data[2] = 1; //echo 1 RTCE 7 + //TX_data[3] = 0; + TX_data[0] = 0xFF; //IAC + TX_data[1] = 0xFB; //WILL + TX_data[2] = 0x01; //Echo + //TX_data[3] = 0; + TX_data[3] = 0xFF; //IAC + TX_data[4] = 0xFD; //DO + TX_data[5] = 0x03; //Suppr GA + TX_data[6] = 0xFF; //IAC + TX_data[7] = 0xFB; //WILL + TX_data[8] = 0x03; //Suppr GA + TX_data[9] = 0; + strcat((char*)TX_data, "NPR modem\r\nready> "); + W5500_write_TX_buffer (W5500, 1, TX_data, 27, 0); //27 + //HMI_printf("ready>"); + is_telnet_opened = 1; + current_rx_line_count = 0; + echo_ON = 1; + display_status_ongoing = 0; + display_who_ongoing = 0; + telnet_last_activity = GLOBAL_timer.read_us(); + } + + if (current_state==0x1C) { // close wait to close + W5500_write_byte(W5500, 0x0001, 0x05, 0x10); + printf("telnet connexion closed\r\nready> "); + fflush(stdout); + is_telnet_opened = 0; + current_rx_line_count = 0; + echo_ON = 1; + display_status_ongoing = 0; + display_who_ongoing = 0; + } + + if (current_state==0x00) { //closed to open + W5500_write_byte(W5500, 0x0001, 0x05, 0x01); + //printf("open \r\n"); + result=1; + } + + if (current_state==0x13) { //opened to listen + W5500_write_byte(W5500, 0x0001, 0x05, 0x02); + //printf("listen \r\n"); + } + previous_state = current_state; + if (is_telnet_opened) { + RX_size = W5500_read_received_size(W5500, 1); + timer_snapshot = GLOBAL_timer.read_us(); + if ((timer_snapshot - telnet_last_activity) > 300000000) { //300000000 + //HMI_printf("Telnet inactivity timeout. Force exit.\r\n"); + W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP + is_telnet_opened = 0; + echo_ON = 1; + display_status_ongoing = 0; + display_who_ongoing = 0; + printf("telnet connexion closed\r\nready> "); + fflush(stdout); + } + //timeout + } + if (RX_size > 0) { + telnet_last_activity = GLOBAL_timer.read_us(); + result=1; + W5500_read_RX_buffer(W5500, 1, RX_data, RX_size); + RX_data[RX_size] = 0; + i = 0; + j = 0; + while (i < RX_size) { + loc_char = (char)RX_data[i]; + //printf("%02X %c\r\n", loc_char, loc_char); + if ( (loc_char >= 0x20) && (loc_char <= 0x7E) ) {//displayable char + if ( (current_rx_line_count < 98) && (echo_ON) ) { + TX_data[j]=RX_data[i]; + i++; + j++; + current_rx_line[current_rx_line_count] = loc_char; + current_rx_line_count++; + } else { + i++; + } + } + else { // special char + if (loc_char == 0xFF) {//IAC + if (RX_data[i+1] == 244) {//ctrl+C + HMI_cancel_current(); + } + i = i + 3; + } + else if ( ( (loc_char == 0x08) || (loc_char == 0x7F) ) && (echo_ON) ) { //backspace + i++; + + if (current_rx_line_count>0) { + current_rx_line_count--; + TX_data[j] = 0x08; + TX_data[j+1] = 0x20; + TX_data[j+2] = 0x08; + j=j+3; + } + } + else if ( (loc_char == 0x0D) && (echo_ON) ){ //end of line + TX_data[j] = 0x0D; + TX_data[j+1] = 0x0A; + i++; + j = j + 2; + current_rx_line[current_rx_line_count] = 0;//null termination + current_rx_line_count++; + W5500_write_TX_buffer (W5500, 1, TX_data, j, 0); + j = 0; + HMI_line_parse (current_rx_line, current_rx_line_count); + current_rx_line_count = 0; + } + else if (loc_char == 0x03) { //ctrl + C + HMI_cancel_current(); + //printf("CTRL + C\r\n"); + i++; + } else { + i++; + } + } + } + if (j > 0) { + W5500_write_TX_buffer (W5500, 1, TX_data, j, 0); + } + //printf("\r\n"); + } + return result; } int serial_term_loop (void) { - char loc_char; - - if (pc.readable()) { - loc_char = getc(pc); - - if (is_telnet_opened == 0) { - if ( (loc_char >= 0x20) && (loc_char <= 0x7E) ) {//printable char - if ( (current_rx_line_count < 98) && (echo_ON) ) { - putc(loc_char, pc); - current_rx_line[current_rx_line_count] = loc_char; - current_rx_line_count++; - } - } - else { - if ( ( (loc_char == 0x08) || (loc_char == 0x7F) ) && (echo_ON) ) {//backspace - if (current_rx_line_count>0) { - current_rx_line_count--; - putc(0x08,pc); - putc(0x20,pc); - putc(0x08,pc); - } - } - else if ( (loc_char == 0x0D) && (echo_ON) ) { - printf("\r\n"); - current_rx_line[current_rx_line_count] = 0; - current_rx_line_count++; - HMI_line_parse (current_rx_line, current_rx_line_count); - current_rx_line_count = 0; - } - else if (loc_char == 0x03) {//ctrl + c - HMI_cancel_current(); - } - } - } - return 1; - } else { - return 0; - } + char loc_char; + + if (pc.readable()) { + loc_char = getc(pc); + + if (is_telnet_opened == 0) { + if ( (loc_char >= 0x20) && (loc_char <= 0x7E) ) {//printable char + if ( (current_rx_line_count < 98) && (echo_ON) ) { + putc(loc_char, pc); + current_rx_line[current_rx_line_count] = loc_char; + current_rx_line_count++; + } + } + else { + if ( ( (loc_char == 0x08) || (loc_char == 0x7F) ) && (echo_ON) ) {//backspace + if (current_rx_line_count>0) { + current_rx_line_count--; + putc(0x08,pc); + putc(0x20,pc); + putc(0x08,pc); + } + } + else if ( (loc_char == 0x0D) && (echo_ON) ) { + printf("\r\n"); + current_rx_line[current_rx_line_count] = 0; + current_rx_line_count++; + HMI_line_parse (current_rx_line, current_rx_line_count); + current_rx_line_count = 0; + } + else if (loc_char == 0x03) {//ctrl + c + HMI_cancel_current(); + } + } + } + return 1; + } else { + return 0; + } } void HMI_line_parse (char* RX_text, int RX_text_count) { - char* loc_command_str;// [100]; - char* loc_param1_str; - char* loc_param2_str; - int command_understood = 0; - int temp; + char* loc_command_str;// [100]; + char* loc_param1_str; + char* loc_param2_str; + int command_understood = 0; + int temp; - loc_command_str = strtok (RX_text, " "); - loc_param1_str = strtok (NULL, " "); - loc_param2_str = strtok (NULL, " "); + loc_command_str = strtok (RX_text, " "); + loc_param1_str = strtok (NULL, " "); + loc_param2_str = strtok (NULL, " "); - if (loc_command_str) { - if (strcmp(loc_command_str, "radio") == 0) { - command_understood = 1; - if (strcmp(loc_param1_str, "on") == 0) { - if (CONF_radio_state_ON_OFF == 0) { - RADIO_on(1, 1, 1); - } - HMI_printf("OK\r\nready> "); - } - else if (strcmp(loc_param1_str, "off") == 0) { - RADIO_off(1); - HMI_printf("OK\r\nready> "); - } - else { - HMI_printf("unknown radio command\r\nready> "); - } - } - - if (strcmp(loc_command_str, "TX_test") == 0) { - command_understood = 1; - HMI_TX_test(loc_param1_str); - } - if (strcmp(loc_command_str, "status") == 0) {//display status - command_understood = 1; - display_status_ongoing = 1; - G_downlink_bandwidth_temp = 0; - G_uplink_bandwidth_temp = 0; - slow_counter = 0; - echo_ON = 0; - HMI_periodic_call(); - } - if (strcmp(loc_command_str, "display") == 0) { - command_understood = 1; - if (strcmp(loc_param1_str, "config") == 0) {//display config - HMI_display_config(); - } - else if (strcmp(loc_param1_str, "static") == 0) {//display static alloc - HMI_display_static(); - } - else if (strcmp(loc_param1_str, "DHCP_ARP") == 0) {//display DHCP_ARP entries - DHCP_ARP_print_entries(); - } - else { - HMI_printf("unknown display command\r\nready> "); - } - } - if (strcmp(loc_command_str, "set") == 0) { - HMI_set_command(loc_param1_str, loc_param2_str); - command_understood = 1; - } - if (strcmp(loc_command_str, "who") == 0) { - //HMI_print_who(); - command_understood = 1; - display_who_ongoing = 1; - slow_counter = 0; - echo_ON = 0; - HMI_periodic_call(); - } - if (strcmp(loc_command_str, "reboot") == 0) { - command_understood = 1; - HMI_reboot(); - } - if (strcmp(loc_command_str, "save") == 0) { - command_understood = 1; + if (loc_command_str) { + if (strcmp(loc_command_str, "radio") == 0) { + command_understood = 1; + if (strcmp(loc_param1_str, "on") == 0) { + if (CONF_radio_state_ON_OFF == 0) { + RADIO_on(1, 1, 1); + } + HMI_printf("OK\r\nready> "); + } + else if (strcmp(loc_param1_str, "off") == 0) { + RADIO_off(1); + HMI_printf("OK\r\nready> "); + } + else { + HMI_printf("unknown radio command\r\nready> "); + } + } + + if (strcmp(loc_command_str, "TX_test") == 0) { + command_understood = 1; + HMI_TX_test(loc_param1_str); + } + if (strcmp(loc_command_str, "status") == 0) {//display status + command_understood = 1; + display_status_ongoing = 1; + G_downlink_bandwidth_temp = 0; + G_uplink_bandwidth_temp = 0; + slow_counter = 0; + echo_ON = 0; + HMI_periodic_call(); + } + if (strcmp(loc_command_str, "display") == 0) { + command_understood = 1; + if (strcmp(loc_param1_str, "config") == 0) {//display config + HMI_display_config(); + } + else if (strcmp(loc_param1_str, "static") == 0) {//display static alloc + HMI_display_static(); + } + else if (strcmp(loc_param1_str, "DHCP_ARP") == 0) {//display DHCP_ARP entries + DHCP_ARP_print_entries(); + } + else { + HMI_printf("unknown display command\r\nready> "); + } + } + if (strcmp(loc_command_str, "set") == 0) { + HMI_set_command(loc_param1_str, loc_param2_str); + command_understood = 1; + } + if (strcmp(loc_command_str, "who") == 0) { + //HMI_print_who(); + command_understood = 1; + display_who_ongoing = 1; + slow_counter = 0; + echo_ON = 0; + HMI_periodic_call(); + } + if (strcmp(loc_command_str, "reboot") == 0) { + command_understood = 1; + HMI_reboot(); + } + if (strcmp(loc_command_str, "save") == 0) { + command_understood = 1; - RADIO_off_if_necessary(0); - temp = NFPR_config_save(); - RADIO_restart_if_necessary(0, 0, 1); - HMI_printf("saved index:%i\r\nready> ", temp); - } - if (strcmp(loc_command_str, "reset_to_default") == 0) { - command_understood = 1; - HMI_printf("clearing saved config...\r\n"); - RADIO_off_if_necessary(0); - virt_EEPROM_errase_all(); - HMI_printf("Done. Now rebooting...\r\n"); - NVIC_SystemReset(); - } - if (strcmp(loc_command_str, "version") == 0) { - command_understood = 1; - HMI_printf("firmware: %s\r\nfreq band: %s\r\nready> ", FW_VERSION, FREQ_BAND); - } - if (strcmp(loc_command_str, "exit") == 0) { - command_understood = 1; - HMI_exit(); - } - if (command_understood == 0) { - HMI_printf("unknown command\r\nready> "); - } - } else {//just a return with nothing - HMI_printf("ready> "); - } + RADIO_off_if_necessary(0); + temp = NFPR_config_save(); + RADIO_restart_if_necessary(0, 0, 1); + HMI_printf("saved index:%i\r\nready> ", temp); + } + if (strcmp(loc_command_str, "reset_to_default") == 0) { + command_understood = 1; + HMI_printf("clearing saved config...\r\n"); + RADIO_off_if_necessary(0); + virt_EEPROM_errase_all(); + HMI_printf("Done. Now rebooting...\r\n"); + NVIC_SystemReset(); + } + if (strcmp(loc_command_str, "version") == 0) { + command_understood = 1; + HMI_printf("firmware: %s\r\nfreq band: %s\r\nready> ", FW_VERSION, FREQ_BAND); + } + if (strcmp(loc_command_str, "exit") == 0) { + command_understood = 1; + HMI_exit(); + } + if (command_understood == 0) { + HMI_printf("unknown command\r\nready> "); + } + } else {//just a return with nothing + HMI_printf("ready> "); + } } void HMI_cancel_current(void) { - if (echo_ON ==0) { - echo_ON = 1; - display_status_ongoing = 0; - display_who_ongoing = 0; - HMI_printf("ready> "); - } + if (echo_ON ==0) { + echo_ON = 1; + display_status_ongoing = 0; + display_who_ongoing = 0; + HMI_printf("ready> "); + } } int HMI_check_radio_OFF(void) { - if (CONF_radio_state_ON_OFF == 1) { - HMI_printf("radio must be off for this command\r\nready> "); - return 0; - } else { - return 1; - } + if (CONF_radio_state_ON_OFF == 1) { + HMI_printf("radio must be off for this command\r\nready> "); + return 0; + } else { + return 1; + } } void HMI_TX_test(char* duration_txt) { - unsigned int duration; - if ( HMI_check_radio_OFF() == 1) { - sscanf (duration_txt, "%i", &duration); - HMI_printf("reconfiguring radio...\r\n"); - SI4463_configure_all(); - wait_ms(50); - TDMA_init_all(); - //SI4463_radio_start(); - - wait_ms(1); - G_SI4463->RX_TX_state = 0; - SI4463_clear_IT(G_SI4463, 0, 0); - wait_ms(10); - CONF_radio_state_ON_OFF = 1; - SI4463_TX_to_RX_transition(); - - wait_ms(10); - CONF_radio_state_ON_OFF = 0; - if (is_TDMA_master == 0 ) { - my_client_radio_connexion_state = 1; - my_radio_client_ID = 0x7E; - } - wait_ms(50); - - TDMA_NULL_frame_init(70); - HMI_printf("radio transmit test %i seconds...\r\n", duration); - duration = duration * 1000; //milliseconds instead of seconds - - SI4432_TX_test(duration); - - HMI_printf("ready> "); - } + unsigned int duration; + if ( HMI_check_radio_OFF() == 1) { + sscanf (duration_txt, "%i", &duration); + HMI_printf("reconfiguring radio...\r\n"); + SI4463_configure_all(); + wait_ms(50); + TDMA_init_all(); + //SI4463_radio_start(); + + wait_ms(1); + G_SI4463->RX_TX_state = 0; + SI4463_clear_IT(G_SI4463, 0, 0); + wait_ms(10); + CONF_radio_state_ON_OFF = 1; + SI4463_TX_to_RX_transition(); + + wait_ms(10); + CONF_radio_state_ON_OFF = 0; + if (is_TDMA_master == 0 ) { + my_client_radio_connexion_state = 1; + my_radio_client_ID = 0x7E; + } + wait_ms(50); + + TDMA_NULL_frame_init(70); + HMI_printf("radio transmit test %i seconds...\r\n", duration); + duration = duration * 1000; //milliseconds instead of seconds + + SI4432_TX_test(duration); + + HMI_printf("ready> "); + } } void HMI_reboot(void) { - if (is_telnet_opened == 1) { - W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); - } - //extern "C" void mbed_reset(); - NVIC_SystemReset(); + if (is_telnet_opened == 1) { + W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); + } + //extern "C" void mbed_reset(); + NVIC_SystemReset(); } void HMI_force_exit(void) { - unsigned char IP_loc[8]; - if (is_telnet_opened == 1) { - IP_int2char (LAN_conf_applied.LAN_modem_IP, IP_loc); - //HMI_printf("\r\n\r\n\r\nNew IP config... force telnet exit.\r\n"); - //HMI_printf("\r\n\r\nNew IP config. Open new telnet session with: %i.%i.%i.%i\r\n\r\n", IP_loc[0], IP_loc[1], IP_loc[2], IP_loc[3]); - W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP - is_telnet_opened = 0; - echo_ON = 1; - display_status_ongoing = 0; - printf("telnet connexion closed\r\nready> "); - fflush(stdout); - } + unsigned char IP_loc[8]; + if (is_telnet_opened == 1) { + IP_int2char (LAN_conf_applied.LAN_modem_IP, IP_loc); + //HMI_printf("\r\n\r\n\r\nNew IP config... force telnet exit.\r\n"); + //HMI_printf("\r\n\r\nNew IP config. Open new telnet session with: %i.%i.%i.%i\r\n\r\n", IP_loc[0], IP_loc[1], IP_loc[2], IP_loc[3]); + W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP + is_telnet_opened = 0; + echo_ON = 1; + display_status_ongoing = 0; + printf("telnet connexion closed\r\nready> "); + fflush(stdout); + } } void HMI_exit(void) { - if (is_telnet_opened == 1) { - W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP - is_telnet_opened = 0; - echo_ON = 1; - display_status_ongoing = 0; - printf("telnet connexion closed\r\nready> "); - fflush(stdout); - } else { - printf("exit only valid for telnet\r\nready> "); - fflush(stdout); - } + if (is_telnet_opened == 1) { + W5500_write_byte(W5500_p1, 0x0001, 0x05, 0x08); //close TCP + is_telnet_opened = 0; + echo_ON = 1; + display_status_ongoing = 0; + printf("telnet connexion closed\r\nready> "); + fflush(stdout); + } else { + printf("exit only valid for telnet\r\nready> "); + fflush(stdout); + } } static char HMI_yes_no[2][4]={'n','o',0,0, 'y','e','s',0}; @@ -430,509 +430,509 @@ static char HMI_yes_no[2][4]={'n','o',0,0, 'y','e','s',0}; static char HMI_master_FDD[3][5]={'n','o',0,0,0,'d','o','w','n',0,'u','p',0,0,0}; void HMI_display_config(void) { - unsigned char IP_loc[8]; + unsigned char IP_loc[8]; - HMI_printf("CONFIG:\r\n callsign: '%s'\r\n is_master: %s\r\n MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", CONF_radio_my_callsign+2, HMI_yes_no[is_TDMA_master],CONF_modem_MAC[0],CONF_modem_MAC[1],CONF_modem_MAC[2],CONF_modem_MAC[3],CONF_modem_MAC[4],CONF_modem_MAC[5]); - HMI_printf(" Eth_mode: %i\r\n", CONF_Eth_mode); - HMI_printf(" ext_SRAM: %s\r\n", HMI_yes_no[is_SRAM_ext]); - HMI_printf(" frequency: %.3fMHz\r\n freq_shift: %.3fMHz\r\n RF_power: %i\r\n modulation: %i\r\n", ((float)CONF_frequency_HD/1000)+FREQ_RANGE_MIN, (float)CONF_freq_shift/1000, CONF_radio_PA_PWR, CONF_radio_modulation); + HMI_printf("CONFIG:\r\n callsign: '%s'\r\n is_master: %s\r\n MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", CONF_radio_my_callsign+2, HMI_yes_no[is_TDMA_master],CONF_modem_MAC[0],CONF_modem_MAC[1],CONF_modem_MAC[2],CONF_modem_MAC[3],CONF_modem_MAC[4],CONF_modem_MAC[5]); + HMI_printf(" Eth_mode: %i\r\n", CONF_Eth_mode); + HMI_printf(" ext_SRAM: %s\r\n", HMI_yes_no[is_SRAM_ext]); + HMI_printf(" frequency: %.3fMHz\r\n freq_shift: %.3fMHz\r\n RF_power: %i\r\n modulation: %i\r\n", ((float)CONF_frequency_HD/1000)+FREQ_RANGE_MIN, (float)CONF_freq_shift/1000, CONF_radio_PA_PWR, CONF_radio_modulation); - HMI_printf(" radio_netw_ID: %i\r\n radio_on_at_start: %s\r\n", CONF_radio_network_ID, HMI_yes_no[CONF_radio_default_state_ON_OFF]); - HMI_printf(" telnet active: %s\r\n telnet routed: %s\r\n", HMI_yes_no[is_telnet_active], HMI_yes_no[is_telnet_routed]); - IP_int2char (LAN_conf_saved.LAN_modem_IP, IP_loc); - IP_int2char (LAN_conf_saved.LAN_subnet_mask, IP_loc+4); - HMI_printf(" modem_IP: %i.%i.%i.%i\r\n netmask: %i.%i.%i.%i\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3],IP_loc[4],IP_loc[5],IP_loc[6],IP_loc[7]); - - if (is_TDMA_master == 1) { - HMI_printf(" master_FDD: %s\r\n", HMI_master_FDD[CONF_master_FDD]); - } - - - if ( (is_TDMA_master == 1) && ( CONF_master_FDD < 2 ) && (CONF_transmission_method==0) ) {//Master FDD down (or no FDD) - IP_int2char (CONF_radio_IP_start, IP_loc); - IP_int2char (CONF_radio_IP_start+CONF_radio_IP_size-1, IP_loc+4); - HMI_printf(" IP_begin: %i.%i.%i.%i\r\n master_IP_size: %ld (Last IP: %i.%i.%i.%i)\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3],CONF_radio_IP_size, IP_loc[4],IP_loc[5],IP_loc[6],IP_loc[7]); - IP_int2char (LAN_conf_saved.LAN_def_route, IP_loc); - HMI_printf(" def_route_active: %s\r\n def_route_val: %i.%i.%i.%i\r\n", HMI_yes_no[LAN_conf_saved.LAN_def_route_activ], IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); - IP_int2char (LAN_conf_saved.LAN_DNS_value, IP_loc); - HMI_printf(" DNS_active: %s\r\n DNS_value: %i.%i.%i.%i\r\n", HMI_yes_no[LAN_conf_saved.LAN_DNS_activ], IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); - } - if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {//Master FDD up - IP_int2char (CONF_master_down_IP, IP_loc); - HMI_printf(" master_down_IP: %i.%i.%i.%i\r\n",IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); - } - if (is_TDMA_master == 0) {//client - IP_int2char (CONF_radio_IP_start, IP_loc); - HMI_printf(" IP_begin: %i.%i.%i.%i\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3]); - HMI_printf(" client_req_size: %ld\r\n DHCP_active: %s\r\n", CONF_radio_IP_size_requested, HMI_yes_no[LAN_conf_saved.DHCP_server_active]); - } - HMI_printf("ready> "); + HMI_printf(" radio_netw_ID: %i\r\n radio_on_at_start: %s\r\n", CONF_radio_network_ID, HMI_yes_no[CONF_radio_default_state_ON_OFF]); + HMI_printf(" telnet active: %s\r\n telnet routed: %s\r\n", HMI_yes_no[is_telnet_active], HMI_yes_no[is_telnet_routed]); + IP_int2char (LAN_conf_saved.LAN_modem_IP, IP_loc); + IP_int2char (LAN_conf_saved.LAN_subnet_mask, IP_loc+4); + HMI_printf(" modem_IP: %i.%i.%i.%i\r\n netmask: %i.%i.%i.%i\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3],IP_loc[4],IP_loc[5],IP_loc[6],IP_loc[7]); + + if (is_TDMA_master == 1) { + HMI_printf(" master_FDD: %s\r\n", HMI_master_FDD[CONF_master_FDD]); + } + + + if ( (is_TDMA_master == 1) && ( CONF_master_FDD < 2 ) && (CONF_transmission_method==0) ) {//Master FDD down (or no FDD) + IP_int2char (CONF_radio_IP_start, IP_loc); + IP_int2char (CONF_radio_IP_start+CONF_radio_IP_size-1, IP_loc+4); + HMI_printf(" IP_begin: %i.%i.%i.%i\r\n master_IP_size: %ld (Last IP: %i.%i.%i.%i)\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3],CONF_radio_IP_size, IP_loc[4],IP_loc[5],IP_loc[6],IP_loc[7]); + IP_int2char (LAN_conf_saved.LAN_def_route, IP_loc); + HMI_printf(" def_route_active: %s\r\n def_route_val: %i.%i.%i.%i\r\n", HMI_yes_no[LAN_conf_saved.LAN_def_route_activ], IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); + IP_int2char (LAN_conf_saved.LAN_DNS_value, IP_loc); + HMI_printf(" DNS_active: %s\r\n DNS_value: %i.%i.%i.%i\r\n", HMI_yes_no[LAN_conf_saved.LAN_DNS_activ], IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); + } + if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {//Master FDD up + IP_int2char (CONF_master_down_IP, IP_loc); + HMI_printf(" master_down_IP: %i.%i.%i.%i\r\n",IP_loc[0],IP_loc[1],IP_loc[2],IP_loc[3]); + } + if (is_TDMA_master == 0) {//client + IP_int2char (CONF_radio_IP_start, IP_loc); + HMI_printf(" IP_begin: %i.%i.%i.%i\r\n", IP_loc[0], IP_loc[1],IP_loc[2],IP_loc[3]); + HMI_printf(" client_req_size: %ld\r\n DHCP_active: %s\r\n", CONF_radio_IP_size_requested, HMI_yes_no[LAN_conf_saved.DHCP_server_active]); + } + HMI_printf("ready> "); } void HMI_display_static(void) { - + } void HMI_set_command(char* loc_param1, char* loc_param2) { - int temp; - unsigned char temp_uchar; - unsigned long int temp_uint; - float frequency; - // unsigned char previous_freq_band; - char DHCP_warning[50]; - if ((loc_param1) && (loc_param2)) { - if (strcmp(loc_param1, "callsign") == 0) { - RADIO_off_if_necessary(1); - strcpy (CONF_radio_my_callsign+2, loc_param2); - CONF_radio_my_callsign[0] = CONF_modem_MAC[4]; - CONF_radio_my_callsign[1] = CONF_modem_MAC[5]; - CONF_radio_my_callsign[15] = 0; - RADIO_restart_if_necessary(1, 0, 1); - HMI_printf("new callsign '%s'\r\nready> ", CONF_radio_my_callsign+2); - } - else if (strcmp(loc_param1, "is_master") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - RADIO_off_if_necessary(1); - is_TDMA_master = temp_uchar; - RADIO_restart_if_necessary(1, 0, 1); - if ( (is_TDMA_master) && (LAN_conf_saved.DHCP_server_active == 1) ) { - strcpy (DHCP_warning, " (warning, DHCP inhibited in master mode)"); - } else { - strcpy (DHCP_warning, ""); - } - HMI_printf("Master '%s'%s\r\nready> ", loc_param2, DHCP_warning); - } - } - else if (strcmp(loc_param1, "telnet_active") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - if(is_telnet_opened) { HMI_exit(); } - is_telnet_active = temp_uchar; - HMI_printf("telnet active '%s'\r\nready> ", loc_param2); - } - } - else if (strcmp(loc_param1, "telnet_routed") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - is_telnet_routed = temp_uchar; - //W5500_re_configure_gateway(W5500_p1); - HMI_printf("telnet routed '%s'\r\nready> ", loc_param2); - } - } - else if (strcmp(loc_param1, "DNS_active") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_DNS_activ = temp_uchar; - RADIO_restart_if_necessary(1, 0, 1); - HMI_printf("DNS active '%s'\r\nready> ", loc_param2); - } - } - else if (strcmp(loc_param1, "def_route_active") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_def_route_activ = temp_uchar; - //W5500_re_configure_gateway(W5500_p1); - RADIO_restart_if_necessary(1, 0, 1); - HMI_printf("default route active '%s'\r\nready> ", loc_param2); - } - } - else if (strcmp(loc_param1, "master_FDD") == 0) { - if(strcmp(loc_param2,"no") == 0) { - CONF_master_FDD = 0; - RADIO_off_if_necessary(1); - RADIO_restart_if_necessary(1, 0, 1); - } - else if(strcmp(loc_param2,"down") == 0) { - CONF_master_FDD = 1; - RADIO_off_if_necessary(1); - RADIO_restart_if_necessary(1, 0, 1); - } - else if(strcmp(loc_param2,"up") == 0) { - CONF_master_FDD = 2; - RADIO_off_if_necessary(1); - RADIO_restart_if_necessary(1, 0, 1); - } - else { - HMI_printf(" wrong value\r\n"); - } - HMI_printf("ready> "); - } - //else if (strcmp(loc_param1, "trans_method") == 0) { - // if(strcmp(loc_param2,"IP") == 0) { - // CONF_transmission_method = 0; - // RADIO_off_if_necessary(1); - // RADIO_restart_if_necessary(1, 0, 1); - // } - // else if(strcmp(loc_param2,"Eth") == 0) { - // CONF_transmission_method = 1; - // RADIO_off_if_necessary(1); - // RADIO_restart_if_necessary(1, 0, 1); - // } - // else { - // HMI_printf(" wrong value\r\n"); - // } - // HMI_printf("ready> "); - //} - //else if (strcmp(loc_param1, "client_static_IP") == 0) { - // temp_uchar = HMI_yes_no_2int(loc_param2); - // if ( (temp_uchar==0) || (temp_uchar==1) ) { - // RADIO_off_if_necessary(1); - // CONF_radio_static_IP_requested = temp_uchar; - // HMI_printf("client static IP '%s'\r\nready> ", loc_param2); - // RADIO_restart_if_necessary(1, 0, 1); - // } - //} - else if (strcmp(loc_param1, "radio_on_at_start") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - CONF_radio_default_state_ON_OFF = temp_uchar; - HMI_printf("radio_on_at_start '%s'\r\nready> ", loc_param2); - } - } - else if (strcmp(loc_param1, "DHCP_active") == 0) { - temp_uchar = HMI_yes_no_2int(loc_param2); - if ( (temp_uchar==0) || (temp_uchar==1) ) { - LAN_conf_saved.DHCP_server_active = temp_uchar; - if ( (is_TDMA_master) && (LAN_conf_saved.DHCP_server_active == 1) ) { - strcpy (DHCP_warning, " (warning, DHCP inhibited in master mode)"); - } else { - strcpy (DHCP_warning, ""); - } - HMI_printf("DHCP_active: '%s'%s\r\nready> ", loc_param2, DHCP_warning); - } - } - else if (strcmp(loc_param1, "modem_IP") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_modem_IP = temp_uint; - //HMI_force_exit(); - //W5500_re_configure(); - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "netmask") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_subnet_mask = temp_uint; - //HMI_force_exit(); - //W5500_re_configure(); - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "def_route_val") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_def_route = temp_uint; - //W5500_re_configure_gateway(W5500_p1); - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "DNS_value") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - LAN_conf_saved.LAN_DNS_value = temp_uint; - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "IP_begin") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - CONF_radio_IP_start = temp_uint; - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "master_down_IP") == 0) { - temp_uint = HMI_str2IP(loc_param2); - if (temp_uint !=0) { - RADIO_off_if_necessary(1); - CONF_master_down_IP = temp_uint; - RADIO_restart_if_necessary(1, 0, 1); - } - } - else if (strcmp(loc_param1, "master_IP_size") == 0) { - temp = sscanf (loc_param2, "%ld", &temp_uint); - if ( (temp==1) && (temp_uint!=0) ) { - RADIO_off_if_necessary(1); - CONF_radio_IP_size = temp_uint; - RADIO_restart_if_necessary(1, 0, 1); - HMI_printf("OK\r\nready> "); - } - else { - HMI_printf("wrong value\r\nready> "); - } - } - else if (strcmp(loc_param1, "client_req_size") == 0) { - temp = sscanf (loc_param2, "%ld", &temp_uint); - if ( (temp==1) && (temp_uint!=0) ) { - RADIO_off_if_necessary(1); - CONF_radio_IP_size_requested = temp_uint; - RADIO_restart_if_necessary(1, 0, 1); - HMI_printf("OK\r\nready> "); - } - else { - HMI_printf("wrong value\r\nready> "); - } - } + int temp; + unsigned char temp_uchar; + unsigned long int temp_uint; + float frequency; + // unsigned char previous_freq_band; + char DHCP_warning[50]; + if ((loc_param1) && (loc_param2)) { + if (strcmp(loc_param1, "callsign") == 0) { + RADIO_off_if_necessary(1); + strcpy (CONF_radio_my_callsign+2, loc_param2); + CONF_radio_my_callsign[0] = CONF_modem_MAC[4]; + CONF_radio_my_callsign[1] = CONF_modem_MAC[5]; + CONF_radio_my_callsign[15] = 0; + RADIO_restart_if_necessary(1, 0, 1); + HMI_printf("new callsign '%s'\r\nready> ", CONF_radio_my_callsign+2); + } + else if (strcmp(loc_param1, "is_master") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + RADIO_off_if_necessary(1); + is_TDMA_master = temp_uchar; + RADIO_restart_if_necessary(1, 0, 1); + if ( (is_TDMA_master) && (LAN_conf_saved.DHCP_server_active == 1) ) { + strcpy (DHCP_warning, " (warning, DHCP inhibited in master mode)"); + } else { + strcpy (DHCP_warning, ""); + } + HMI_printf("Master '%s'%s\r\nready> ", loc_param2, DHCP_warning); + } + } + else if (strcmp(loc_param1, "telnet_active") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + if(is_telnet_opened) { HMI_exit(); } + is_telnet_active = temp_uchar; + HMI_printf("telnet active '%s'\r\nready> ", loc_param2); + } + } + else if (strcmp(loc_param1, "telnet_routed") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + is_telnet_routed = temp_uchar; + //W5500_re_configure_gateway(W5500_p1); + HMI_printf("telnet routed '%s'\r\nready> ", loc_param2); + } + } + else if (strcmp(loc_param1, "DNS_active") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_DNS_activ = temp_uchar; + RADIO_restart_if_necessary(1, 0, 1); + HMI_printf("DNS active '%s'\r\nready> ", loc_param2); + } + } + else if (strcmp(loc_param1, "def_route_active") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_def_route_activ = temp_uchar; + //W5500_re_configure_gateway(W5500_p1); + RADIO_restart_if_necessary(1, 0, 1); + HMI_printf("default route active '%s'\r\nready> ", loc_param2); + } + } + else if (strcmp(loc_param1, "master_FDD") == 0) { + if(strcmp(loc_param2,"no") == 0) { + CONF_master_FDD = 0; + RADIO_off_if_necessary(1); + RADIO_restart_if_necessary(1, 0, 1); + } + else if(strcmp(loc_param2,"down") == 0) { + CONF_master_FDD = 1; + RADIO_off_if_necessary(1); + RADIO_restart_if_necessary(1, 0, 1); + } + else if(strcmp(loc_param2,"up") == 0) { + CONF_master_FDD = 2; + RADIO_off_if_necessary(1); + RADIO_restart_if_necessary(1, 0, 1); + } + else { + HMI_printf(" wrong value\r\n"); + } + HMI_printf("ready> "); + } + //else if (strcmp(loc_param1, "trans_method") == 0) { + // if(strcmp(loc_param2,"IP") == 0) { + // CONF_transmission_method = 0; + // RADIO_off_if_necessary(1); + // RADIO_restart_if_necessary(1, 0, 1); + // } + // else if(strcmp(loc_param2,"Eth") == 0) { + // CONF_transmission_method = 1; + // RADIO_off_if_necessary(1); + // RADIO_restart_if_necessary(1, 0, 1); + // } + // else { + // HMI_printf(" wrong value\r\n"); + // } + // HMI_printf("ready> "); + //} + //else if (strcmp(loc_param1, "client_static_IP") == 0) { + // temp_uchar = HMI_yes_no_2int(loc_param2); + // if ( (temp_uchar==0) || (temp_uchar==1) ) { + // RADIO_off_if_necessary(1); + // CONF_radio_static_IP_requested = temp_uchar; + // HMI_printf("client static IP '%s'\r\nready> ", loc_param2); + // RADIO_restart_if_necessary(1, 0, 1); + // } + //} + else if (strcmp(loc_param1, "radio_on_at_start") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + CONF_radio_default_state_ON_OFF = temp_uchar; + HMI_printf("radio_on_at_start '%s'\r\nready> ", loc_param2); + } + } + else if (strcmp(loc_param1, "DHCP_active") == 0) { + temp_uchar = HMI_yes_no_2int(loc_param2); + if ( (temp_uchar==0) || (temp_uchar==1) ) { + LAN_conf_saved.DHCP_server_active = temp_uchar; + if ( (is_TDMA_master) && (LAN_conf_saved.DHCP_server_active == 1) ) { + strcpy (DHCP_warning, " (warning, DHCP inhibited in master mode)"); + } else { + strcpy (DHCP_warning, ""); + } + HMI_printf("DHCP_active: '%s'%s\r\nready> ", loc_param2, DHCP_warning); + } + } + else if (strcmp(loc_param1, "modem_IP") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_modem_IP = temp_uint; + //HMI_force_exit(); + //W5500_re_configure(); + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "netmask") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_subnet_mask = temp_uint; + //HMI_force_exit(); + //W5500_re_configure(); + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "def_route_val") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_def_route = temp_uint; + //W5500_re_configure_gateway(W5500_p1); + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "DNS_value") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + LAN_conf_saved.LAN_DNS_value = temp_uint; + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "IP_begin") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + CONF_radio_IP_start = temp_uint; + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "master_down_IP") == 0) { + temp_uint = HMI_str2IP(loc_param2); + if (temp_uint !=0) { + RADIO_off_if_necessary(1); + CONF_master_down_IP = temp_uint; + RADIO_restart_if_necessary(1, 0, 1); + } + } + else if (strcmp(loc_param1, "master_IP_size") == 0) { + temp = sscanf (loc_param2, "%ld", &temp_uint); + if ( (temp==1) && (temp_uint!=0) ) { + RADIO_off_if_necessary(1); + CONF_radio_IP_size = temp_uint; + RADIO_restart_if_necessary(1, 0, 1); + HMI_printf("OK\r\nready> "); + } + else { + HMI_printf("wrong value\r\nready> "); + } + } + else if (strcmp(loc_param1, "client_req_size") == 0) { + temp = sscanf (loc_param2, "%ld", &temp_uint); + if ( (temp==1) && (temp_uint!=0) ) { + RADIO_off_if_necessary(1); + CONF_radio_IP_size_requested = temp_uint; + RADIO_restart_if_necessary(1, 0, 1); + HMI_printf("OK\r\nready> "); + } + else { + HMI_printf("wrong value\r\nready> "); + } + } - else if (strcmp(loc_param1, "frequency") == 0) { - temp = sscanf (loc_param2, "%f", &frequency); - if ( (temp == 1) && (frequency<=FREQ_RANGE_MAX) && (frequency>FREQ_RANGE_MIN) ) { - RADIO_off_if_necessary(0); - frequency = (frequency - FREQ_RANGE_MIN)*1000 + 0.3; - CONF_frequency_HD = (short int)frequency; - //RADIO_compute_freq_params();//REMOVE TEST - RADIO_restart_if_necessary(0, 1, 1); - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("wrong freq value\r\nready> "); - } - } - else if (strcmp(loc_param1, "freq_shift") == 0) { - temp = sscanf (loc_param2, "%f", &frequency); - if ( (temp == 1) && (frequency<=10) && (frequency>=-10) ) { - RADIO_off_if_necessary(0); - frequency = (frequency*1000); - CONF_freq_shift = (short int)frequency; - //RADIO_compute_freq_params();//REMOVE TEST - //if (CONF_frequency_band == previous_freq_band) { - // RADIO_restart_if_necessary(0, 0, 1); - //}else { - RADIO_restart_if_necessary(0, 1, 1); - //} - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("wrong freq value\r\nready> "); - } - } - else if (strcmp(loc_param1, "RF_power") == 0) { - temp_uint = sscanf (loc_param2, "%i", &temp); - if ( (temp_uint == 1) && (temp<128) ) { - RADIO_off_if_necessary(0); - CONF_radio_PA_PWR = temp; - SI4463_set_power(G_SI4463); - RADIO_restart_if_necessary(0, 0, 1); - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("error : max RF_power value 127\r\nready> "); - } - } - else if (strcmp(loc_param1, "Eth_mode") == 0) { - temp_uint = sscanf (loc_param2, "%i", &temp); - if ( (temp_uint == 1) && (temp <= 7) ) { - CONF_Eth_mode = temp; - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("error : max Eth_mode value 7\r\nready> "); - } - } - else if (strcmp(loc_param1, "modulation") == 0) { - temp_uint = sscanf (loc_param2, "%i", &temp); - temp_uchar = temp; - //if ( (temp_uint == 1) && ((temp_uchar==13)||(temp_uchar==14)||(temp_uchar==22)||(temp_uchar==23)||(temp_uchar==24)) ) { - if ( (temp_uint == 1) && ( ((temp_uchar>=11)&&(temp_uchar<=14)) || ((temp_uchar>=20)&&(temp_uchar<=24)) ) ) { - RADIO_off_if_necessary(1); - CONF_radio_modulation = temp_uchar; - RADIO_restart_if_necessary(1, 1, 1); - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("wrong modulation value\r\nready> "); - } - } - else if (strcmp(loc_param1, "radio_netw_ID") == 0) { - temp_uint = sscanf (loc_param2, "%i", &temp); - temp_uchar = temp; - if ( (temp_uint == 1) && (temp_uchar <= 15) ) { - RADIO_off_if_necessary(1); - CONF_radio_network_ID = temp_uchar; - RADIO_restart_if_necessary(1, 1, 1); - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("wrong value, 15 max\r\nready> "); - } - } - else { - HMI_printf("unknown config param\r\nready> "); - } - } else { - HMI_printf("set command requires 2 param\r\nready> "); - } + else if (strcmp(loc_param1, "frequency") == 0) { + temp = sscanf (loc_param2, "%f", &frequency); + if ( (temp == 1) && (frequency<=FREQ_RANGE_MAX) && (frequency>FREQ_RANGE_MIN) ) { + RADIO_off_if_necessary(0); + frequency = (frequency - FREQ_RANGE_MIN)*1000 + 0.3; + CONF_frequency_HD = (short int)frequency; + //RADIO_compute_freq_params();//REMOVE TEST + RADIO_restart_if_necessary(0, 1, 1); + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("wrong freq value\r\nready> "); + } + } + else if (strcmp(loc_param1, "freq_shift") == 0) { + temp = sscanf (loc_param2, "%f", &frequency); + if ( (temp == 1) && (frequency<=10) && (frequency>=-10) ) { + RADIO_off_if_necessary(0); + frequency = (frequency*1000); + CONF_freq_shift = (short int)frequency; + //RADIO_compute_freq_params();//REMOVE TEST + //if (CONF_frequency_band == previous_freq_band) { + // RADIO_restart_if_necessary(0, 0, 1); + //}else { + RADIO_restart_if_necessary(0, 1, 1); + //} + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("wrong freq value\r\nready> "); + } + } + else if (strcmp(loc_param1, "RF_power") == 0) { + temp_uint = sscanf (loc_param2, "%i", &temp); + if ( (temp_uint == 1) && (temp<128) ) { + RADIO_off_if_necessary(0); + CONF_radio_PA_PWR = temp; + SI4463_set_power(G_SI4463); + RADIO_restart_if_necessary(0, 0, 1); + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("error : max RF_power value 127\r\nready> "); + } + } + else if (strcmp(loc_param1, "Eth_mode") == 0) { + temp_uint = sscanf (loc_param2, "%i", &temp); + if ( (temp_uint == 1) && (temp <= 7) ) { + CONF_Eth_mode = temp; + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("error : max Eth_mode value 7\r\nready> "); + } + } + else if (strcmp(loc_param1, "modulation") == 0) { + temp_uint = sscanf (loc_param2, "%i", &temp); + temp_uchar = temp; + //if ( (temp_uint == 1) && ((temp_uchar==13)||(temp_uchar==14)||(temp_uchar==22)||(temp_uchar==23)||(temp_uchar==24)) ) { + if ( (temp_uint == 1) && ( ((temp_uchar>=11)&&(temp_uchar<=14)) || ((temp_uchar>=20)&&(temp_uchar<=24)) ) ) { + RADIO_off_if_necessary(1); + CONF_radio_modulation = temp_uchar; + RADIO_restart_if_necessary(1, 1, 1); + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("wrong modulation value\r\nready> "); + } + } + else if (strcmp(loc_param1, "radio_netw_ID") == 0) { + temp_uint = sscanf (loc_param2, "%i", &temp); + temp_uchar = temp; + if ( (temp_uint == 1) && (temp_uchar <= 15) ) { + RADIO_off_if_necessary(1); + CONF_radio_network_ID = temp_uchar; + RADIO_restart_if_necessary(1, 1, 1); + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("wrong value, 15 max\r\nready> "); + } + } + else { + HMI_printf("unknown config param\r\nready> "); + } + } else { + HMI_printf("set command requires 2 param\r\nready> "); + } } unsigned long int HMI_str2IP(char* raw_string) { - unsigned int IP_char_t[6]; - unsigned char IP_char[6]; - unsigned long int answer; - int i; - answer = sscanf(raw_string, "%i.%i.%i.%i", IP_char_t, IP_char_t+1, IP_char_t+2, IP_char_t+3); - for (i=0;i<4; i++) { - IP_char[i] = IP_char_t[i]; - } - if (answer == 4) { - answer = IP_char2int(IP_char); - HMI_printf("OK\r\nready> "); - } else { - HMI_printf("bad IP format\r\nready> "); - answer = 0; - } - return answer; + unsigned int IP_char_t[6]; + unsigned char IP_char[6]; + unsigned long int answer; + int i; + answer = sscanf(raw_string, "%i.%i.%i.%i", IP_char_t, IP_char_t+1, IP_char_t+2, IP_char_t+3); + for (i=0;i<4; i++) { + IP_char[i] = IP_char_t[i]; + } + if (answer == 4) { + answer = IP_char2int(IP_char); + HMI_printf("OK\r\nready> "); + } else { + HMI_printf("bad IP format\r\nready> "); + answer = 0; + } + return answer; } unsigned char HMI_yes_no_2int(char* raw_string) { - unsigned char answer; - if (strcmp (raw_string, "yes") == 0) { - answer = 1; - } - else if (strcmp (raw_string, "no") == 0) { - answer = 0; - } - else { - HMI_printf("value must be 'yes' or 'no'\r\nready> "); - answer = -1; - } - return answer; + unsigned char answer; + if (strcmp (raw_string, "yes") == 0) { + answer = 1; + } + else if (strcmp (raw_string, "no") == 0) { + answer = 0; + } + else { + HMI_printf("value must be 'yes' or 'no'\r\nready> "); + answer = -1; + } + return answer; } void HMI_print_who(void) { - int i; - unsigned int loc_age; - unsigned int timer_snapshot; - unsigned long int last_IP; - unsigned char IP_c[6]; - char temp_string[50] = {0x1B,0x5B,0x41,0x1B,0x5B,0x41,0x1B,0x5B,0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x00}; + int i; + unsigned int loc_age; + unsigned int timer_snapshot; + unsigned long int last_IP; + unsigned char IP_c[6]; + char temp_string[50] = {0x1B,0x5B,0x41,0x1B,0x5B,0x41,0x1B,0x5B,0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x1B, 0x5B, 0x41,0x00}; - if (slow_counter == 0) { temp_string[0] = 0; } - HMI_printf ("%s%i Master: ID:127 Callsign:%s\r\n", temp_string, slow_counter, CONF_radio_master_callsign+2); - IP_int2char (LAN_conf_applied.LAN_modem_IP, IP_c); - HMI_printf ("ME: Callsign:%s ID:%i modem IP:%i.%i.%i.%i\r\n", CONF_radio_my_callsign+2, my_radio_client_ID, IP_c[0], IP_c[1], IP_c[2], IP_c[3]); - HMI_printf ("Clients:\r\n"); - timer_snapshot = GLOBAL_timer.read_us(); - for (i=0; i 0) ) { - //HMI_printf("RSSI: %i\r\nCTRL+c to exit...\r\n", (RSSI_total_stat / RSSI_stat_pkt_nb) ); - HMI_printf(" DOWNLINK - bandwidth:%.1f RSSI:%.1f ERR:%.2f%% \r\n", loc_downlink_bw, ((float)G_downlink_RSSI/256/2-136), ((float)G_downlink_BER)/500); // /500 - RSSI_total_stat = 0; - RSSI_stat_pkt_nb = 0; - } else { - HMI_printf(" DOWNLINK - bandwidth: %.1f RSSI: ERR: \r\n", loc_downlink_bw); - - } - if ( (is_TDMA_master == 0) && (my_client_radio_connexion_state == 2) ) { - HMI_printf(" UPLINK - bandwidth:%.1f RSSI:%.1f ERR:%.2f%% \r\nCTRL+c to exit...\r\n", loc_uplink_bw, ((float)G_radio_addr_table_RSSI[my_radio_client_ID]/2-136), ((float)G_radio_addr_table_BER[my_radio_client_ID])/500); - } else { - HMI_printf(" UPLINK - bandwidth:%.1f RSSI: ERR: \r\nCTRL+c to exit...\r\n", loc_uplink_bw); - } - G_downlink_bandwidth_temp = 0; - G_uplink_bandwidth_temp = 0; + static char text_radio_status[3][22] = { + "waiting connection", + "connected", + "connection rejected" + }; + static char text_reject_reason[2][15] = { + "IP requested", + "clients", + }; + char temp_string[22]; + float loc_downlink_bw; + float loc_uplink_bw; + int TA_loc; + temp_string[0]=0x1B; + temp_string[1]=0x5B; + temp_string[2]=0x41; + temp_string[3]=0x1B; + temp_string[4]=0x5B; + temp_string[5]=0x41; + temp_string[6]=0x1B; + temp_string[7]=0x5B; + temp_string[8]=0x41; + temp_string[9]=0x1B; + temp_string[10]=0x5B; + temp_string[11]=0x41; + temp_string[12]=0x1B; + temp_string[13]=0x5B; + temp_string[14]=0x41; + temp_string[15]=0x00; + //temp_string[15]=0x1B; + //temp_string[16]=0x5B; + //temp_string[17]=0x41; + //temp_string[18]=0x00; + if (slow_counter == 0) { temp_string[0] = 0; } + if (is_TDMA_master) { + loc_downlink_bw = G_uplink_bandwidth_temp * 0.004; + loc_uplink_bw = G_downlink_bandwidth_temp * 0.004; + TA_loc = 0; + } else { + loc_downlink_bw = G_downlink_bandwidth_temp * 0.004; + loc_uplink_bw = G_uplink_bandwidth_temp * 0.004; + TA_loc = TDMA_table_TA[my_radio_client_ID]; + } + if (CONF_radio_state_ON_OFF == 0) { + HMI_printf("%s %i status: radio OFF \r\n", temp_string, slow_counter); + } + else if (my_client_radio_connexion_state == 0x03) { + HMI_printf("%s %i status: rejected because too many %s \r\n", temp_string, slow_counter, text_reject_reason[G_connect_rejection_reason-2]); + } else { + HMI_printf("%s %i status: %s TA:%.1fkm Temp:%idegC \r\n", temp_string, slow_counter, text_radio_status[my_client_radio_connexion_state-1], 0.15*(float)TA_loc, G_temperature_SI4463); + } + //HMI_printf(" TX buff filling %i\r\n", (TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer)*128);//!!!test + if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) { + HMI_printf(" RX tops from master FDD down %i\r\n", RX_top_FDD_up_counter); + } else { + HMI_printf(" RX_Eth_IPv4 %i ;TX_radio_IPv4 %i ; RX_radio_IPv4 %i \r\n", RX_Eth_IPv4_counter, TX_radio_IPv4_counter, RX_radio_IPv4_counter); + //HMI_printf(" RX_Eth_IPv4 %i ;TX_radio_IPv4 %i ; RX_radio_IPv4 %i \r\n", RX_Eth_IPv4_counter, TX_radio_IPv4_counter, (TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer)*128);//!!!! debug FIFO filling + } + if ( (is_TDMA_master == 0) && (RSSI_stat_pkt_nb > 0) ) { + //HMI_printf("RSSI: %i\r\nCTRL+c to exit...\r\n", (RSSI_total_stat / RSSI_stat_pkt_nb) ); + HMI_printf(" DOWNLINK - bandwidth:%.1f RSSI:%.1f ERR:%.2f%% \r\n", loc_downlink_bw, ((float)G_downlink_RSSI/256/2-136), ((float)G_downlink_BER)/500); // /500 + RSSI_total_stat = 0; + RSSI_stat_pkt_nb = 0; + } else { + HMI_printf(" DOWNLINK - bandwidth: %.1f RSSI: ERR: \r\n", loc_downlink_bw); + + } + if ( (is_TDMA_master == 0) && (my_client_radio_connexion_state == 2) ) { + HMI_printf(" UPLINK - bandwidth:%.1f RSSI:%.1f ERR:%.2f%% \r\nCTRL+c to exit...\r\n", loc_uplink_bw, ((float)G_radio_addr_table_RSSI[my_radio_client_ID]/2-136), ((float)G_radio_addr_table_BER[my_radio_client_ID])/500); + } else { + HMI_printf(" UPLINK - bandwidth:%.1f RSSI: ERR: \r\nCTRL+c to exit...\r\n", loc_uplink_bw); + } + G_downlink_bandwidth_temp = 0; + G_uplink_bandwidth_temp = 0; } void HMI_periodic_call (void) { - if (display_status_ongoing) { - HMI_print_status(); - slow_counter++; - } - if (display_who_ongoing) { - HMI_print_who(); - slow_counter++; - } + if (display_status_ongoing) { + HMI_print_status(); + slow_counter++; + } + if (display_who_ongoing) { + HMI_print_who(); + slow_counter++; + } } void HMI_printf_detail (void) { - int size; - if (is_telnet_opened) { - size = strlen (HMI_out_str); - W5500_write_TX_buffer (W5500_p1, 1, (unsigned char*)HMI_out_str, size, 0); - } - else { - printf("%s", HMI_out_str); - fflush(stdout); - } + int size; + if (is_telnet_opened) { + size = strlen (HMI_out_str); + W5500_write_TX_buffer (W5500_p1, 1, (unsigned char*)HMI_out_str, size, 0); + } + else { + printf("%s", HMI_out_str); + fflush(stdout); + } } diff --git a/NPR_14/source/HMI_telnet.h b/NPR_14/source/HMI_telnet.h index d3e8c7a..2457b60 100644 --- a/NPR_14/source/HMI_telnet.h +++ b/NPR_14/source/HMI_telnet.h @@ -23,7 +23,7 @@ #include "global_variables.h" #define HMI_printf(param, ...) sprintf (HMI_out_str, param, ##__VA_ARGS__);\ - HMI_printf_detail(); + HMI_printf_detail(); int telnet_loop(W5500_chip* W5500); diff --git a/NPR_14/source/L1L2_radio.cpp b/NPR_14/source/L1L2_radio.cpp index 7a54542..ce81010 100644 --- a/NPR_14/source/L1L2_radio.cpp +++ b/NPR_14/source/L1L2_radio.cpp @@ -34,447 +34,447 @@ static unsigned char data_RX[360];//260 static unsigned char rframe_TX[384]; void FDDup_RX_FIFO_dequeue(void) { - int rframe_lgth, i; - unsigned char data_temp; - unsigned long int timer_snapshot; - i = 0; - if (RX_FIFO_last_received > RX_FIFO_RD_point) { - for (i=0; i<=3; i++) {//4 bytes for timer and RSSI - data_RX[i] = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; - RX_FIFO_RD_point++; - } - data_temp = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; - RX_FIFO_RD_point++; - rframe_lgth = data_temp + SI4463_offset_size; - data_RX[4] = data_temp; - - for (i=0; i RX_FIFO_RD_point) { + for (i=0; i<=3; i++) {//4 bytes for timer and RSSI + data_RX[i] = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; + RX_FIFO_RD_point++; + } + data_temp = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; + RX_FIFO_RD_point++; + rframe_lgth = data_temp + SI4463_offset_size; + data_RX[4] = data_temp; + + for (i=0; i RX_FIFO_RD_point) { //something new in RX FIFO - timer_snapshot = GLOBAL_timer.read_us(); - //printf ("something in RX FIFO\r\n"); - //RX_FRAME_count_debug++; - //printf("%i RX:", RX_FRAME_count_debug); - //for (i=4; i<10; i++){ - // printf("%02X.",RX_FIFO_data[(RX_FIFO_RD_point+i) & RX_FIFO_mask]); - //} - //printf("\r\n"); - frame_timer = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; - RX_FIFO_RD_point++; - frame_timer = (0x100 * RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]) + frame_timer; - RX_FIFO_RD_point++; - frame_timer = (0x10000 * RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]) + frame_timer; - RX_FIFO_RD_point++; - RSSI = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; - RX_FIFO_RD_point++; - rframe_lgth = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask] + SI4463_offset_size; - RX_FIFO_RD_point++; - if (rframe_lgth > SI4463_CONF_max_field2_size) { - rframe_lgth = SI4463_CONF_max_field2_size; - } - TDMA_byte = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; - is_downlink = TDMA_byte & 0x40; - RX_FIFO_RD_point++; - client_ID_byte = RX_FIFO_data[ (RX_FIFO_RD_point ) & RX_FIFO_mask]; // +1 - protocol_byte = RX_FIFO_data[ (RX_FIFO_RD_point + 1) & RX_FIFO_mask]; // +2 - - size_w_FEC = rframe_lgth - 1; - - if (is_TDMA_master) { - TA_local = TDMA_TA_measure_single_frame(frame_timer, TDMA_byte, client_ID_byte, size_w_FEC); - if ( (timer_snapshot-last_rframe_seen) > (CONF_radio_timeout+1000000) ) { - last_rframe_seen = timer_snapshot; - wait_ms(20);//lets time for client to switch to RX - SI4463_prepa_TX_1(); - } - } - last_rframe_seen = timer_snapshot; + static unsigned char ethernet_buffer[radio_addr_table_size][1600]; + static int size_received[radio_addr_table_size]; + static unsigned char prev_seg_counter[radio_addr_table_size]; + static unsigned char curr_pkt_counter[radio_addr_table_size]; + + unsigned char seg_counter; + unsigned char pkt_counter; + unsigned char is_last_seg; + unsigned char client_addr; + unsigned char LID; + unsigned char protocol; + unsigned char protocol_byte; + unsigned char client_ID_byte; + unsigned char segmenter_byte; + //static unsigned char data_RX[260]; + int TA_local = 100000; + int RSSI; + int rframe_lgth; + int size_w_FEC; + int size_wo_FEC; + int segment_size; + int client_ID_filter; + unsigned int loc_micro_BER; + unsigned int frame_timer; + static int rx_count = 0; + unsigned char TDMA_byte; + unsigned char is_downlink; + unsigned long int timer_snapshot; + // int i; + + if (RX_FIFO_last_received > RX_FIFO_RD_point) { //something new in RX FIFO + timer_snapshot = GLOBAL_timer.read_us(); + //printf ("something in RX FIFO\r\n"); + //RX_FRAME_count_debug++; + //printf("%i RX:", RX_FRAME_count_debug); + //for (i=4; i<10; i++){ + // printf("%02X.",RX_FIFO_data[(RX_FIFO_RD_point+i) & RX_FIFO_mask]); + //} + //printf("\r\n"); + frame_timer = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; + RX_FIFO_RD_point++; + frame_timer = (0x100 * RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]) + frame_timer; + RX_FIFO_RD_point++; + frame_timer = (0x10000 * RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]) + frame_timer; + RX_FIFO_RD_point++; + RSSI = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; + RX_FIFO_RD_point++; + rframe_lgth = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask] + SI4463_offset_size; + RX_FIFO_RD_point++; + if (rframe_lgth > SI4463_CONF_max_field2_size) { + rframe_lgth = SI4463_CONF_max_field2_size; + } + TDMA_byte = RX_FIFO_data[RX_FIFO_RD_point & RX_FIFO_mask]; + is_downlink = TDMA_byte & 0x40; + RX_FIFO_RD_point++; + client_ID_byte = RX_FIFO_data[ (RX_FIFO_RD_point ) & RX_FIFO_mask]; // +1 + protocol_byte = RX_FIFO_data[ (RX_FIFO_RD_point + 1) & RX_FIFO_mask]; // +2 + + size_w_FEC = rframe_lgth - 1; + + if (is_TDMA_master) { + TA_local = TDMA_TA_measure_single_frame(frame_timer, TDMA_byte, client_ID_byte, size_w_FEC); + if ( (timer_snapshot-last_rframe_seen) > (CONF_radio_timeout+1000000) ) { + last_rframe_seen = timer_snapshot; + wait_ms(20);//lets time for client to switch to RX + SI4463_prepa_TX_1(); + } + } + last_rframe_seen = timer_snapshot; - // WITH FEC - size_wo_FEC = FEC_decode(data_RX, size_w_FEC, &loc_micro_BER); - //if (loc_micro_BER>0) {printf("err micro%i\r\n", loc_micro_BER);} - radio_save_RSSI_BER (client_ID_byte, is_downlink, RSSI, loc_micro_BER); - //printf("RSSI:%i BER:%i\r\n", RSSI, loc_micro_BER); - protocol = 0; - if ( size_wo_FEC > 0) { - client_addr = data_RX[0] & 0x7F; //inside FEC, non need to use parity bit - if (is_TDMA_master) { - LID = client_addr; //client_addr; - } else { - LID = 0;//only one RX buffer for clients - } - protocol = data_RX[1]; - // client ID filter - client_ID_filter = 0; - if (is_TDMA_master) { - if ( (is_downlink == 0) && (client_addr < radio_addr_table_size) ) { - if (CONF_radio_addr_table_status[client_addr]) { - client_ID_filter = 1; - } - } - if ( (is_downlink == 0) && (client_addr == 0x7E) ) { - client_ID_filter = 1; - } - } - else if ( ( (client_addr == my_radio_client_ID) || (client_addr == 0x7F) ) && (is_downlink) ) { - client_ID_filter = 1; - } - if (client_ID_filter) { - /* - if ( (protocol == 0x01) && (LID < radio_addr_table_size) ) { //RAW ETHERNET - segment_size = size_wo_FEC - 3; - segmenter_byte = data_RX[2]; - pkt_counter = (segmenter_byte & 0xF0) / 0x10; - is_last_seg = segmenter_byte & 0x08; - seg_counter = segmenter_byte & 0x07; - //printf("RX seg:%02X\r\n", segmenter_byte); - - if (seg_counter == 0) {//beginning of a new pkt - curr_pkt_counter[LID] = pkt_counter; - memcpy (ethernet_buffer[LID], data_RX+3, segment_size); - size_received[LID] = segment_size; - //printf("1st seg\r\n"); - } - else if ( (seg_counter == (prev_seg_counter[LID] + 1)) && (pkt_counter == curr_pkt_counter[LID]) ) { - //folowing segment - memcpy ( (ethernet_buffer[LID]+size_received[LID]), data_RX+3, segment_size); - size_received[LID] = size_received[LID] + segment_size; - //printf("follow seg\r\n"); - } - else { //continuity error - size_received[LID] = 0; - } - prev_seg_counter[LID] = seg_counter; - - if ( (is_last_seg == 0x08) && (size_received[LID] > 0) ) { - // Raw Ethernet... Not implemented yet - } - } */ - if ( (protocol == 0x02) && (LID < radio_addr_table_size) ) { //IPv4 Access 0x02 - //printf("IPv4 fr received\r\n"); - segment_size = size_wo_FEC - 3; - segmenter_byte = data_RX[2]; - pkt_counter = (segmenter_byte & 0xF0) / 0x10; - is_last_seg = segmenter_byte & 0x08; - seg_counter = segmenter_byte & 0x07; - //printf("RX seg:%02X\r\n", segmenter_byte); - - if (seg_counter == 0) {//beginning of a new pkt - curr_pkt_counter[LID] = pkt_counter; - memcpy (ethernet_buffer[LID] + 14, data_RX+3, segment_size); - size_received[LID] = segment_size; - //printf("1st seg\r\n"); - } - else if ( (seg_counter == (prev_seg_counter[LID] + 1)) && (pkt_counter == curr_pkt_counter[LID]) ) { - //folowing segment - memcpy ( (ethernet_buffer[LID] + size_received[LID] +14), data_RX+3, segment_size); - size_received[LID] = size_received[LID] + segment_size; - //printf("follow seg\r\n"); - } - else { //continuity error - size_received[LID] = 0; - } - prev_seg_counter[LID] = seg_counter; - - if ( (is_last_seg == 0x08) && (size_received[LID] > 0) ) { - IPv4_from_radio (ethernet_buffer[LID], size_received[LID] + 14); - G_downlink_bandwidth_temp = G_downlink_bandwidth_temp + size_received[LID]; - RX_radio_IPv4_counter++; - //printf("pkt full\r\n"); - } - } - else if (protocol == 0x1E) { - //printf("sig fr received\r\n"); - signaling_frame_exploitation (data_RX, size_wo_FEC, TA_local); - } - else if ( (protocol == 0x1F) && (is_TDMA_master == 0) ) { - TDMA_slave_alloc_exploitation (data_RX, size_wo_FEC); - } - else if (protocol == 0x00) { - - } - else { - if (super_debug) { - printf("ERR Protocol\r\n"); - } - } - } - } else { - if (super_debug) { - printf("FEC error\r\n"); - } - } - TDMA_byte_RX_interp (TDMA_byte, client_ID_byte, protocol_byte, frame_timer); - rx_count++; - } + // WITH FEC + size_wo_FEC = FEC_decode(data_RX, size_w_FEC, &loc_micro_BER); + //if (loc_micro_BER>0) {printf("err micro%i\r\n", loc_micro_BER);} + radio_save_RSSI_BER (client_ID_byte, is_downlink, RSSI, loc_micro_BER); + //printf("RSSI:%i BER:%i\r\n", RSSI, loc_micro_BER); + protocol = 0; + if ( size_wo_FEC > 0) { + client_addr = data_RX[0] & 0x7F; //inside FEC, non need to use parity bit + if (is_TDMA_master) { + LID = client_addr; //client_addr; + } else { + LID = 0;//only one RX buffer for clients + } + protocol = data_RX[1]; + // client ID filter + client_ID_filter = 0; + if (is_TDMA_master) { + if ( (is_downlink == 0) && (client_addr < radio_addr_table_size) ) { + if (CONF_radio_addr_table_status[client_addr]) { + client_ID_filter = 1; + } + } + if ( (is_downlink == 0) && (client_addr == 0x7E) ) { + client_ID_filter = 1; + } + } + else if ( ( (client_addr == my_radio_client_ID) || (client_addr == 0x7F) ) && (is_downlink) ) { + client_ID_filter = 1; + } + if (client_ID_filter) { + /* + if ( (protocol == 0x01) && (LID < radio_addr_table_size) ) { //RAW ETHERNET + segment_size = size_wo_FEC - 3; + segmenter_byte = data_RX[2]; + pkt_counter = (segmenter_byte & 0xF0) / 0x10; + is_last_seg = segmenter_byte & 0x08; + seg_counter = segmenter_byte & 0x07; + //printf("RX seg:%02X\r\n", segmenter_byte); + + if (seg_counter == 0) {//beginning of a new pkt + curr_pkt_counter[LID] = pkt_counter; + memcpy (ethernet_buffer[LID], data_RX+3, segment_size); + size_received[LID] = segment_size; + //printf("1st seg\r\n"); + } + else if ( (seg_counter == (prev_seg_counter[LID] + 1)) && (pkt_counter == curr_pkt_counter[LID]) ) { + //folowing segment + memcpy ( (ethernet_buffer[LID]+size_received[LID]), data_RX+3, segment_size); + size_received[LID] = size_received[LID] + segment_size; + //printf("follow seg\r\n"); + } + else { //continuity error + size_received[LID] = 0; + } + prev_seg_counter[LID] = seg_counter; + + if ( (is_last_seg == 0x08) && (size_received[LID] > 0) ) { + // Raw Ethernet... Not implemented yet + } + } */ + if ( (protocol == 0x02) && (LID < radio_addr_table_size) ) { //IPv4 Access 0x02 + //printf("IPv4 fr received\r\n"); + segment_size = size_wo_FEC - 3; + segmenter_byte = data_RX[2]; + pkt_counter = (segmenter_byte & 0xF0) / 0x10; + is_last_seg = segmenter_byte & 0x08; + seg_counter = segmenter_byte & 0x07; + //printf("RX seg:%02X\r\n", segmenter_byte); + + if (seg_counter == 0) {//beginning of a new pkt + curr_pkt_counter[LID] = pkt_counter; + memcpy (ethernet_buffer[LID] + 14, data_RX+3, segment_size); + size_received[LID] = segment_size; + //printf("1st seg\r\n"); + } + else if ( (seg_counter == (prev_seg_counter[LID] + 1)) && (pkt_counter == curr_pkt_counter[LID]) ) { + //folowing segment + memcpy ( (ethernet_buffer[LID] + size_received[LID] +14), data_RX+3, segment_size); + size_received[LID] = size_received[LID] + segment_size; + //printf("follow seg\r\n"); + } + else { //continuity error + size_received[LID] = 0; + } + prev_seg_counter[LID] = seg_counter; + + if ( (is_last_seg == 0x08) && (size_received[LID] > 0) ) { + IPv4_from_radio (ethernet_buffer[LID], size_received[LID] + 14); + G_downlink_bandwidth_temp = G_downlink_bandwidth_temp + size_received[LID]; + RX_radio_IPv4_counter++; + //printf("pkt full\r\n"); + } + } + else if (protocol == 0x1E) { + //printf("sig fr received\r\n"); + signaling_frame_exploitation (data_RX, size_wo_FEC, TA_local); + } + else if ( (protocol == 0x1F) && (is_TDMA_master == 0) ) { + TDMA_slave_alloc_exploitation (data_RX, size_wo_FEC); + } + else if (protocol == 0x00) { + + } + else { + if (super_debug) { + printf("ERR Protocol\r\n"); + } + } + } + } else { + if (super_debug) { + printf("FEC error\r\n"); + } + } + TDMA_byte_RX_interp (TDMA_byte, client_ID_byte, protocol_byte, frame_timer); + rx_count++; + } } void radio_signalisation_frame_building(void) { - + } int FEC_encode2 (unsigned char* data_in, unsigned char* data_out, int size_in) { - int size_out; - int size_single_bloc; - int size_single_bloc_pl1; - unsigned char CRC_1; - unsigned char CRC_2; - unsigned char CRC_3; - unsigned char CRC_4; - unsigned char data_field_1; - unsigned char data_field_2; - unsigned char data_field_3; - unsigned char data_field_4; - int i; - CRC_1 = 0; - CRC_2 = 0; - CRC_3 = 0; - CRC_4 = 0; - - size_single_bloc = size_in/3; - if (size_in % 3) { - size_single_bloc++; - } - size_single_bloc_pl1 = size_single_bloc + 1; - size_out = 4 * size_single_bloc_pl1; - for (i=0; i0) {printf("ERR%i\r\n", nb_errors);} - - (*micro_BER) = nb_errors; - - if (nb_errors>1) { - size_out = 0; //unrecoverable error - //printf("unrecoverable\r\n"); - } else { - // OK - size_out = 3 * size_single_bloc; - // FIELD 1 - if (CRC_check_1==0) {//field 1 OK - for (i=0; i0) {printf("ERR%i\r\n", nb_errors);} + + (*micro_BER) = nb_errors; + + if (nb_errors>1) { + size_out = 0; //unrecoverable error + //printf("unrecoverable\r\n"); + } else { + // OK + size_out = 3 * size_single_bloc; + // FIELD 1 + if (CRC_check_1==0) {//field 1 OK + for (i=0; i 0) { size_w_FEC++; } - size_w_FEC = 4*size_w_FEC + 4; - return size_w_FEC; + int size_w_FEC; + size_w_FEC = size_wo_FEC/3; + if ((size_wo_FEC%3) > 0) { size_w_FEC++; } + size_w_FEC = 4*size_w_FEC + 4; + return size_w_FEC; } void segment_and_push (unsigned char* data_unsegmented, int total_size, unsigned char client_addr, unsigned char protocol) { - static unsigned char packet_counter = 0; - unsigned char segment_counter = 0; - unsigned char segmenter_byte; - unsigned char is_last_segment; - int size_wo_FEC; - int size_w_FEC; - int rframe_length; - int size_remaining; - int segment_size; - int size_to_send; - unsigned char data_wo_FEC[300]; + static unsigned char packet_counter = 0; + unsigned char segment_counter = 0; + unsigned char segmenter_byte; + unsigned char is_last_segment; + int size_wo_FEC; + int size_w_FEC; + int rframe_length; + int size_remaining; + int segment_size; + int size_to_send; + unsigned char data_wo_FEC[300]; #ifdef EXT_SRAM_USAGE - unsigned char radio_pckt[360]; + unsigned char radio_pckt[360]; #endif - int size_sent; - // unsigned int rsize_needed; - unsigned int timer_snapshot; - size_remaining = total_size; + int size_sent; + // unsigned int rsize_needed; + unsigned int timer_snapshot; + size_remaining = total_size; - if (size_remaining <63) { - size_remaining = 63; - } - - segment_counter = 0; - size_sent = 0; - // rsize_needed = 100 + (total_size * 1.4); - if (total_size < 1510) { - if (TX_FIFO_full_global(1) == 0) { - G_uplink_bandwidth_temp = G_uplink_bandwidth_temp + total_size; - TX_radio_IPv4_counter++; - while (size_remaining > 0) { - if (size_remaining <= 252) { - segment_size = size_remaining; - is_last_segment = 0x08; - } else { - segment_size = 252; - is_last_segment = 0x00; - } - if (segment_size <63) { - size_to_send = 63; - } else { - size_to_send = segment_size; - } - timer_snapshot = GLOBAL_timer.read_us(); - rframe_TX[0] = (timer_snapshot >> 16) & 0xFF; - - size_wo_FEC = size_to_send + 3; //+ 3 inside FEC header - size_w_FEC = size_w_FEC_compute (size_wo_FEC); - rframe_length = size_w_FEC + 1 - SI4463_offset_size; - if (rframe_length < 0) {rframe_length = 0;} - rframe_TX[1] = rframe_length; - rframe_TX[2] = 0x01; //TDMA byte - - segmenter_byte = (packet_counter & 0x0F) * 0x10 + is_last_segment + (segment_counter & 0x07); - data_wo_FEC[0] = client_addr + parity_bit_elab[(client_addr&0x7F)]; //client address - data_wo_FEC[1] = protocol; //protocol : raw ethernet - data_wo_FEC[2] = segmenter_byte; // segmenter byte - memcpy(data_wo_FEC+3, (data_unsegmented + size_sent), size_to_send); - size_sent = size_sent + size_to_send; - size_w_FEC = FEC_encode2(data_wo_FEC, rframe_TX+3, size_wo_FEC); - TX_FIFO_write_global(rframe_TX, size_w_FEC+3);//3 for timer & length & TDMA_byte - size_remaining = size_remaining - segment_size; - segment_counter++; - - } - packet_counter++; - } else { - //if (super_debug) { - // printf ("FULL last_ready:%08X RD_point:%08X\r\n", TXPS_FIFO->last_ready, TXPS_FIFO->RD_point); - //} - } - } + if (size_remaining <63) { + size_remaining = 63; + } + + segment_counter = 0; + size_sent = 0; + // rsize_needed = 100 + (total_size * 1.4); + if (total_size < 1510) { + if (TX_FIFO_full_global(1) == 0) { + G_uplink_bandwidth_temp = G_uplink_bandwidth_temp + total_size; + TX_radio_IPv4_counter++; + while (size_remaining > 0) { + if (size_remaining <= 252) { + segment_size = size_remaining; + is_last_segment = 0x08; + } else { + segment_size = 252; + is_last_segment = 0x00; + } + if (segment_size <63) { + size_to_send = 63; + } else { + size_to_send = segment_size; + } + timer_snapshot = GLOBAL_timer.read_us(); + rframe_TX[0] = (timer_snapshot >> 16) & 0xFF; + + size_wo_FEC = size_to_send + 3; //+ 3 inside FEC header + size_w_FEC = size_w_FEC_compute (size_wo_FEC); + rframe_length = size_w_FEC + 1 - SI4463_offset_size; + if (rframe_length < 0) {rframe_length = 0;} + rframe_TX[1] = rframe_length; + rframe_TX[2] = 0x01; //TDMA byte + + segmenter_byte = (packet_counter & 0x0F) * 0x10 + is_last_segment + (segment_counter & 0x07); + data_wo_FEC[0] = client_addr + parity_bit_elab[(client_addr&0x7F)]; //client address + data_wo_FEC[1] = protocol; //protocol : raw ethernet + data_wo_FEC[2] = segmenter_byte; // segmenter byte + memcpy(data_wo_FEC+3, (data_unsegmented + size_sent), size_to_send); + size_sent = size_sent + size_to_send; + size_w_FEC = FEC_encode2(data_wo_FEC, rframe_TX+3, size_wo_FEC); + TX_FIFO_write_global(rframe_TX, size_w_FEC+3);//3 for timer & length & TDMA_byte + size_remaining = size_remaining - segment_size; + segment_counter++; + + } + packet_counter++; + } else { + //if (super_debug) { + // printf ("FULL last_ready:%08X RD_point:%08X\r\n", TXPS_FIFO->last_ready, TXPS_FIFO->RD_point); + //} + } + } } //unsigned char TX_buff_intern_FIFOdata[42][384]; @@ -483,277 +483,277 @@ void segment_and_push (unsigned char* data_unsegmented, int total_size, unsigned //unsigned int TX_buff_intern_last_ready=0; void TX_FIFO_write_global(unsigned char* data, int size) { - if (is_SRAM_ext == 1) { - TX_ext_FIFO_write(data, size); - } else { - TX_intern_FIFO_write(data, size); - } + if (is_SRAM_ext == 1) { + TX_ext_FIFO_write(data, size); + } else { + TX_intern_FIFO_write(data, size); + } } void TX_intern_FIFO_write(unsigned char* data, int size) { - if (size <= 128) { - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128);//size - TX_buff_intern_WR_pointer++; - } - else if (size <= 256) { - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128); - TX_buff_intern_WR_pointer++; - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+128, 128);//size-128 - TX_buff_intern_WR_pointer++; - } - else { - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128); - TX_buff_intern_WR_pointer++; - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+128, 128); - TX_buff_intern_WR_pointer++; - memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+256, 128);//size-256 - TX_buff_intern_WR_pointer++; - } - TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; + if (size <= 128) { + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128);//size + TX_buff_intern_WR_pointer++; + } + else if (size <= 256) { + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128); + TX_buff_intern_WR_pointer++; + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+128, 128);//size-128 + TX_buff_intern_WR_pointer++; + } + else { + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data, 128); + TX_buff_intern_WR_pointer++; + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+128, 128); + TX_buff_intern_WR_pointer++; + memcpy (TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], data+256, 128);//size-256 + TX_buff_intern_WR_pointer++; + } + TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; } void ext_SRAM_write2(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size) { - //static unsigned char trash[350]; - static unsigned char command[6] = {0x02, 0x00, 0x00, 0x00}; - loc_SPI->cs->write(0); - command[3] = address & 0xFF; - command[2] = (address & 0xFF00) >> 8; - command[1] = (address & 0xFF0000) >> 16; - loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); - loc_SPI->spi_port->transfer_2 (loc_data, size, trash, size); - loc_SPI->cs->write(1); + //static unsigned char trash[350]; + static unsigned char command[6] = {0x02, 0x00, 0x00, 0x00}; + loc_SPI->cs->write(0); + command[3] = address & 0xFF; + command[2] = (address & 0xFF00) >> 8; + command[1] = (address & 0xFF0000) >> 16; + loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); + loc_SPI->spi_port->transfer_2 (loc_data, size, trash, size); + loc_SPI->cs->write(1); } void TX_ext_FIFO_write(unsigned char* data, int size) { - unsigned int loc_address; - //printf("size_wr_ext %i\n\r", size); - if (size <= 128) { - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data, loc_address, size); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; - TX_buff_ext_WR_pointer++; - } - else if (size <= 256) { - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data, loc_address, 128); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; - TX_buff_ext_WR_pointer++; - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data+128, loc_address, size-128); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; - TX_buff_ext_WR_pointer++; - } - else { - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data, loc_address, 128); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; - TX_buff_ext_WR_pointer++; - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data+128, loc_address, 128); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; - TX_buff_ext_WR_pointer++; - loc_address = (TX_buff_ext_WR_pointer & 1023)*128; - ext_SRAM_write2(SPI_SRAM_p, data+256, loc_address, size-256); - TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; - TX_buff_ext_WR_pointer++; - } - TX_buff_ext_last_ready = TX_buff_ext_WR_pointer; + unsigned int loc_address; + //printf("size_wr_ext %i\n\r", size); + if (size <= 128) { + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data, loc_address, size); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; + TX_buff_ext_WR_pointer++; + } + else if (size <= 256) { + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data, loc_address, 128); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; + TX_buff_ext_WR_pointer++; + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data+128, loc_address, size-128); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; + TX_buff_ext_WR_pointer++; + } + else { + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data, loc_address, 128); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = data[1]; + TX_buff_ext_WR_pointer++; + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data+128, loc_address, 128); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; + TX_buff_ext_WR_pointer++; + loc_address = (TX_buff_ext_WR_pointer & 1023)*128; + ext_SRAM_write2(SPI_SRAM_p, data+256, loc_address, size-256); + TX_buff_ext_sizes[TX_buff_ext_WR_pointer & 1023] = 0; + TX_buff_ext_WR_pointer++; + } + TX_buff_ext_last_ready = TX_buff_ext_WR_pointer; } int TX_intern_FIFO_get_lastfrzize(void) { - int size_loc; - size_loc = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1]; - size_loc = size_loc + 1 + SI4463_offset_size; - return size_loc; + int size_loc; + size_loc = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1]; + size_loc = size_loc + 1 + SI4463_offset_size; + return size_loc; } int TX_intern_FIFO_read(unsigned char* data) { - int size_loc; - size_loc = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1];//42 - size_loc = size_loc + 1 + SI4463_offset_size; - size_loc = size_loc + 1;//for timer coarse - //printf("sizeread: %i\r\n", size_loc); - if (size_loc <= 128) { - memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc - TX_buff_intern_RD_pointer++; - } - else if (size_loc<=256) { - memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); - TX_buff_intern_RD_pointer++; - memcpy(data+128, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc-128 - TX_buff_intern_RD_pointer++; - } - else { - memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); - TX_buff_intern_RD_pointer++; - memcpy(data+128, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); - TX_buff_intern_RD_pointer++; - memcpy(data+256, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc-256 - TX_buff_intern_RD_pointer++; - } - return size_loc; + int size_loc; + size_loc = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1];//42 + size_loc = size_loc + 1 + SI4463_offset_size; + size_loc = size_loc + 1;//for timer coarse + //printf("sizeread: %i\r\n", size_loc); + if (size_loc <= 128) { + memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc + TX_buff_intern_RD_pointer++; + } + else if (size_loc<=256) { + memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); + TX_buff_intern_RD_pointer++; + memcpy(data+128, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc-128 + TX_buff_intern_RD_pointer++; + } + else { + memcpy(data, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); + TX_buff_intern_RD_pointer++; + memcpy(data+128, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128); + TX_buff_intern_RD_pointer++; + memcpy(data+256, TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128], 128);//size_loc-256 + TX_buff_intern_RD_pointer++; + } + return size_loc; } unsigned int compute_TX_buff_size_global(void) {//for TDMA - unsigned int size_loc; - if (is_SRAM_ext == 1) { - size_loc = (TX_buff_intern_last_ready - TX_buff_intern_RD_pointer); - size_loc = size_loc + (TX_buff_ext_last_ready - TX_buff_ext_RD_pointer); - size_loc = size_loc/3; - } else { - size_loc = (TX_buff_intern_last_ready - TX_buff_intern_RD_pointer)/3; - } - return size_loc; + unsigned int size_loc; + if (is_SRAM_ext == 1) { + size_loc = (TX_buff_intern_last_ready - TX_buff_intern_RD_pointer); + size_loc = size_loc + (TX_buff_ext_last_ready - TX_buff_ext_RD_pointer); + size_loc = size_loc/3; + } else { + size_loc = (TX_buff_intern_last_ready - TX_buff_intern_RD_pointer)/3; + } + return size_loc; } int TX_FIFO_full_global (int priority) { - if (is_SRAM_ext == 1) { - return TX_FIFO_full_withSRAM(priority); - } else { - return TX_FIFO_full_woSRAM(priority); - } + if (is_SRAM_ext == 1) { + return TX_FIFO_full_withSRAM(priority); + } else { + return TX_FIFO_full_woSRAM(priority); + } } int TX_FIFO_full_woSRAM (int priority) { - //priority : 1= normal, 0=high priority (signaling) - int FIFO_filling; - int loc_threshold; - FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; - if (priority == 1) { - loc_threshold = 110;//low priority - } else { - loc_threshold = 120;//high priority - } - if (FIFO_filling > loc_threshold) {//40 - //printf("FIFO_full!\r\n"); - return 1; - } else { - return 0; - } + //priority : 1= normal, 0=high priority (signaling) + int FIFO_filling; + int loc_threshold; + FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; + if (priority == 1) { + loc_threshold = 110;//low priority + } else { + loc_threshold = 120;//high priority + } + if (FIFO_filling > loc_threshold) {//40 + //printf("FIFO_full!\r\n"); + return 1; + } else { + return 0; + } } int TX_FIFO_full_withSRAM (int priority) { - int FIFO_filling; - int loc_threshold; - FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; - if (priority == 1) { - loc_threshold = 950;//low priority - } else { - loc_threshold = 1000;//high priority - } - if (FIFO_filling > loc_threshold) {//40 - //printf("FIFO_fullext!\r\n"); - return 1; - } else { - return 0; - } + int FIFO_filling; + int loc_threshold; + FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; + if (priority == 1) { + loc_threshold = 950;//low priority + } else { + loc_threshold = 1000;//high priority + } + if (FIFO_filling > loc_threshold) {//40 + //printf("FIFO_fullext!\r\n"); + return 1; + } else { + return 0; + } } void ext_SRAM_read2(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size) { - static unsigned char command[6] = {0x03, 0x00, 0x00, 0x00}; - loc_SPI->cs->write(0); - command[3] = address & 0xFF; - command[2] = (address & 0xFF00) >> 8; - command[1] = (address & 0xFF0000) >> 16; - loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); - loc_SPI->spi_port->transfer_2 (trash, size, loc_data, size); - loc_SPI->cs->write(1); + static unsigned char command[6] = {0x03, 0x00, 0x00, 0x00}; + loc_SPI->cs->write(0); + command[3] = address & 0xFF; + command[2] = (address & 0xFF00) >> 8; + command[1] = (address & 0xFF0000) >> 16; + loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); + loc_SPI->spi_port->transfer_2 (trash, size, loc_data, size); + loc_SPI->cs->write(1); } void ext_SRAM_periodic_call(void) { - int intern_FIFO_filling; - int ext_FIFO_filling; - int i, loc_size; - int loc_bloc_nb=1; - unsigned int loc_address; - unsigned int loc_time_int; - unsigned char RX_frame_datation; - unsigned char loc_time_char; - loc_time_int = GLOBAL_timer.read_us(); - loc_time_char = (loc_time_int >> 16) & 0xFF; - intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; - ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; - while ( (ext_FIFO_filling > 0) && (intern_FIFO_filling <= 9) ) { - for (i=1; i<=loc_bloc_nb; i++) { - loc_address = (TX_buff_ext_RD_pointer & 1023) *128; - ext_SRAM_read2(SPI_SRAM_p, TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], loc_address, 128); - - if (i==1) { - RX_frame_datation = TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][0]; - loc_size = TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][1]; - loc_size = loc_size + SI4463_offset_size + 2; - //printf("size:%i\r\n", loc_size); - if (loc_size <= 128) { - loc_bloc_nb = 1; - } else if (loc_size <= 256) { - loc_bloc_nb = 2; - } else { - loc_bloc_nb = 3; - } - } - - //if (TX_buff_ext_sizes[TX_buff_ext_RD_pointer & 1023] > 0) { - // TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][1] = TX_buff_ext_sizes[TX_buff_ext_RD_pointer & 1023]; - //} - TX_buff_ext_RD_pointer++; - //printf("delay %i\r\n", (int)loc_time_char - (int)RX_frame_datation); - if ( (loc_time_char - RX_frame_datation) < CONF_Tx_rframe_timeout) { - //if (1) { - //purge old frames if condition false - TX_buff_intern_WR_pointer++; - } - //else { - // printf ("purged!\r\n");//!!! - // printf("date1 %i date2 %i\r\n", loc_time_char, RX_frame_datation); - //} - } - TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; - intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; - ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; - } + int intern_FIFO_filling; + int ext_FIFO_filling; + int i, loc_size; + int loc_bloc_nb=1; + unsigned int loc_address; + unsigned int loc_time_int; + unsigned char RX_frame_datation; + unsigned char loc_time_char; + loc_time_int = GLOBAL_timer.read_us(); + loc_time_char = (loc_time_int >> 16) & 0xFF; + intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; + ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; + while ( (ext_FIFO_filling > 0) && (intern_FIFO_filling <= 9) ) { + for (i=1; i<=loc_bloc_nb; i++) { + loc_address = (TX_buff_ext_RD_pointer & 1023) *128; + ext_SRAM_read2(SPI_SRAM_p, TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], loc_address, 128); + + if (i==1) { + RX_frame_datation = TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][0]; + loc_size = TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][1]; + loc_size = loc_size + SI4463_offset_size + 2; + //printf("size:%i\r\n", loc_size); + if (loc_size <= 128) { + loc_bloc_nb = 1; + } else if (loc_size <= 256) { + loc_bloc_nb = 2; + } else { + loc_bloc_nb = 3; + } + } + + //if (TX_buff_ext_sizes[TX_buff_ext_RD_pointer & 1023] > 0) { + // TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128][1] = TX_buff_ext_sizes[TX_buff_ext_RD_pointer & 1023]; + //} + TX_buff_ext_RD_pointer++; + //printf("delay %i\r\n", (int)loc_time_char - (int)RX_frame_datation); + if ( (loc_time_char - RX_frame_datation) < CONF_Tx_rframe_timeout) { + //if (1) { + //purge old frames if condition false + TX_buff_intern_WR_pointer++; + } + //else { + // printf ("purged!\r\n");//!!! + // printf("date1 %i date2 %i\r\n", loc_time_char, RX_frame_datation); + //} + } + TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; + intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; + ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; + } } //void radio_flush_TX_FIFO(void) { -// TXPS_FIFO->WR_point = 0; -// TXPS_FIFO->RD_point = 0; -// TXPS_FIFO->last_ready = 0; +// TXPS_FIFO->WR_point = 0; +// TXPS_FIFO->RD_point = 0; +// TXPS_FIFO->last_ready = 0; //} int ext_SRAM_detect(void) { - unsigned char data_1[4] = {0x3C, 0x4A, 0xF3, 0x12}; - unsigned char data_2[4] = {0xFF, 0xFF, 0xFF, 0xFF}; - int i; - int sram_detected = 1; - ext_SRAM_write2(SPI_SRAM_p, data_1, 2345, 4); - ext_SRAM_read2(SPI_SRAM_p, data_2, 2345, 4); - for (i=0; i<4; i++) { - if (data_2[i] != data_1[i]) {sram_detected = 0;} - } - return sram_detected; + unsigned char data_1[4] = {0x3C, 0x4A, 0xF3, 0x12}; + unsigned char data_2[4] = {0xFF, 0xFF, 0xFF, 0xFF}; + int i; + int sram_detected = 1; + ext_SRAM_write2(SPI_SRAM_p, data_1, 2345, 4); + ext_SRAM_read2(SPI_SRAM_p, data_2, 2345, 4); + for (i=0; i<4; i++) { + if (data_2[i] != data_1[i]) {sram_detected = 0;} + } + return sram_detected; } void radio_flush_TX_FIFO(void) { - TX_buff_intern_WR_pointer=0; - TX_buff_intern_RD_pointer=0; - TX_buff_intern_last_ready=0; - TX_buff_ext_WR_pointer=0; - TX_buff_ext_RD_pointer=0; - TX_buff_ext_last_ready=0; + TX_buff_intern_WR_pointer=0; + TX_buff_intern_RD_pointer=0; + TX_buff_intern_last_ready=0; + TX_buff_ext_WR_pointer=0; + TX_buff_ext_RD_pointer=0; + TX_buff_ext_last_ready=0; } void radio_save_RSSI_BER (unsigned char client_byte, unsigned char is_downlink, unsigned char RSSI_loc, unsigned int micro_BER) { - unsigned char client_ID = 0xF0; - client_ID = client_byte & 0x7F; - - if ( (is_TDMA_master) && (is_downlink == 0) && (parity_bit_check[client_byte]) && (client_ID < radio_addr_table_size) ) { - G_radio_addr_table_RSSI[client_ID] = (26 * RSSI_loc) + (0.9 * G_radio_addr_table_RSSI[client_ID]); - G_radio_addr_table_BER[client_ID] = (1250 * micro_BER) + (0.9 * G_radio_addr_table_BER[client_ID]); - - } - if ( (is_TDMA_master == 0) && (is_downlink) ) { - G_downlink_RSSI = (26 * RSSI_loc) + (0.9 * G_downlink_RSSI); - G_downlink_BER = (1250 * micro_BER) + (0.9 * G_downlink_BER); - } - //if (micro_BER>0) {printf("err save%i %i\r\n", micro_BER, G_downlink_BER);} + unsigned char client_ID = 0xF0; + client_ID = client_byte & 0x7F; + + if ( (is_TDMA_master) && (is_downlink == 0) && (parity_bit_check[client_byte]) && (client_ID < radio_addr_table_size) ) { + G_radio_addr_table_RSSI[client_ID] = (26 * RSSI_loc) + (0.9 * G_radio_addr_table_RSSI[client_ID]); + G_radio_addr_table_BER[client_ID] = (1250 * micro_BER) + (0.9 * G_radio_addr_table_BER[client_ID]); + + } + if ( (is_TDMA_master == 0) && (is_downlink) ) { + G_downlink_RSSI = (26 * RSSI_loc) + (0.9 * G_downlink_RSSI); + G_downlink_BER = (1250 * micro_BER) + (0.9 * G_downlink_BER); + } + //if (micro_BER>0) {printf("err save%i %i\r\n", micro_BER, G_downlink_BER);} } diff --git a/NPR_14/source/SI4463.cpp b/NPR_14/source/SI4463.cpp index 777a84b..1455ef6 100644 --- a/NPR_14/source/SI4463.cpp +++ b/NPR_14/source/SI4463.cpp @@ -24,34 +24,34 @@ #include "L1L2_radio.h" #ifdef FREQ_BAND_2M - #include "SI4463_config_20_2m.h" - #include "SI4463_config_11_2m.h" - #include "SI4463_config_21_2m.h" - #include "SI4463_config_12_2m.h" - #include "SI4463_config_22_2m.h" - #include "SI4463_config_13_2m.h" - #include "SI4463_config_23_2m.h" - #include "SI4463_config_14_2m.h" - #include "SI4463_config_24_2m.h" + #include "SI4463_config_20_2m.h" + #include "SI4463_config_11_2m.h" + #include "SI4463_config_21_2m.h" + #include "SI4463_config_12_2m.h" + #include "SI4463_config_22_2m.h" + #include "SI4463_config_13_2m.h" + #include "SI4463_config_23_2m.h" + #include "SI4463_config_14_2m.h" + #include "SI4463_config_24_2m.h" #else - //#include "SI4463_config_10.h" - #include "SI4463_config_20.h" - //#include "radio_config_Si4463_20.h" - #include "SI4463_config_11.h" - //#include "radio_config_Si4463_11.h" - #include "SI4463_config_21.h" - //#include "SI4463_config_21_GMSK.h" - //#include "radio_config_Si4463_21.h" - #include "SI4463_config_12.h" - #include "SI4463_config_22.h" - //#include "radio_config_Si4463_22.h" - #include "SI4463_config_13.h" - //#include "radio_config_Si4463_13.h" - #include "SI4463_config_23.h" - //#include "radio_config_Si4463_23.h" - #include "SI4463_config_14.h" - #include "SI4463_config_24.h" - //#include "radio_config_Si4463_24.h" + //#include "SI4463_config_10.h" + #include "SI4463_config_20.h" + //#include "radio_config_Si4463_20.h" + #include "SI4463_config_11.h" + //#include "radio_config_Si4463_11.h" + #include "SI4463_config_21.h" + //#include "SI4463_config_21_GMSK.h" + //#include "radio_config_Si4463_21.h" + #include "SI4463_config_12.h" + #include "SI4463_config_22.h" + //#include "radio_config_Si4463_22.h" + #include "SI4463_config_13.h" + //#include "radio_config_Si4463_13.h" + #include "SI4463_config_23.h" + //#include "radio_config_Si4463_23.h" + #include "SI4463_config_14.h" + #include "SI4463_config_24.h" + //#include "radio_config_Si4463_24.h" #endif //Timeout SI4463_prepa_TX_1_call; @@ -71,41 +71,41 @@ static unsigned char TX_test_inprogress = 0; // Low level functions & drivers void SI4463_send_command(SI4463_Chip* SI4463, unsigned char* data, int size) { - unsigned char loc_RX[30]; - SI4463->cs->write(0); - SI4463->spi->transfer_2(data, size, loc_RX, size); - SI4463->cs->write(1); - wait_us(1); + unsigned char loc_RX[30]; + SI4463->cs->write(0); + SI4463->spi->transfer_2(data, size, loc_RX, size); + SI4463->cs->write(1); + wait_us(1); } int SI4463_CTS_read_answer(SI4463_Chip* SI4463, unsigned char* data, int size, int timeout) { - unsigned char loc_RX[10]; - unsigned char loc_TX[10]; - int answer; - int loops = 0; - loc_TX[0] = 0x44; - loops = 0; - SI4463->cs->write(0); - SI4463->spi->transfer_2(loc_TX, 2, loc_RX, 2); - while ((loc_RX[1] != 0xFF) && (loops < timeout)) { - SI4463->cs->write(1); - wait_us(20); - SI4463->cs->write(0); - SI4463->spi->transfer_2(loc_TX, 2, loc_RX, 2); - loops++; - } - if (size > 0) { - SI4463->spi->transfer_2(loc_TX, size, data, size); - } - SI4463->cs->write(1); - wait_us(1); - if (loops >= timeout) { - answer = 0; - } else { - answer =1; - } - //printf (" loc answer:%i ", answer); - return answer; + unsigned char loc_RX[10]; + unsigned char loc_TX[10]; + int answer; + int loops = 0; + loc_TX[0] = 0x44; + loops = 0; + SI4463->cs->write(0); + SI4463->spi->transfer_2(loc_TX, 2, loc_RX, 2); + while ((loc_RX[1] != 0xFF) && (loops < timeout)) { + SI4463->cs->write(1); + wait_us(20); + SI4463->cs->write(0); + SI4463->spi->transfer_2(loc_TX, 2, loc_RX, 2); + loops++; + } + if (size > 0) { + SI4463->spi->transfer_2(loc_TX, size, data, size); + } + SI4463->cs->write(1); + wait_us(1); + if (loops >= timeout) { + answer = 0; + } else { + answer =1; + } + //printf (" loc answer:%i ", answer); + return answer; } //** Higher level functions *** @@ -113,561 +113,561 @@ int SI4463_CTS_read_answer(SI4463_Chip* SI4463, unsigned char* data, int size, i // configures using RADIO_CONFIGURATION_DATA_ARRAY //int SI4463_configure_from_10(SI4463_Chip* SI4463) { -// unsigned char radio_config_data_10[1400] = RADIO_CONFIGURATION_DATA_ARRAY_10;//22 -// CONF_TDMA_frame_duration = 939000; -// CONF_TDMA_slot_duration = 53400; -// CONF_reduced_TDMA_slot_duration = 20400; -// CONF_TDMA_slot_margin = 300; -// CONF_TR_margain = 1300; -// CONF_TA_margain = 2000; -// CONF_preamble_duration_for_decide = 3100; //1090 -// CONF_long_preamble_duration_for_TA = 3833;//1420 -// CONF_byte_duration = 143; -// CONF_preamble_TX_long = 22; -// CONF_preamble_TX_short = 16; -// CONF_Tx_rframe_timeout = 30; -// CONF_radio_timeout_small = 10000000;//10sec -// CONF_signaling_period = 1; -// return SI4463_configure_from_h (SI4463, radio_config_data_10); +// unsigned char radio_config_data_10[1400] = RADIO_CONFIGURATION_DATA_ARRAY_10;//22 +// CONF_TDMA_frame_duration = 939000; +// CONF_TDMA_slot_duration = 53400; +// CONF_reduced_TDMA_slot_duration = 20400; +// CONF_TDMA_slot_margin = 300; +// CONF_TR_margain = 1300; +// CONF_TA_margain = 2000; +// CONF_preamble_duration_for_decide = 3100; //1090 +// CONF_long_preamble_duration_for_TA = 3833;//1420 +// CONF_byte_duration = 143; +// CONF_preamble_TX_long = 22; +// CONF_preamble_TX_short = 16; +// CONF_Tx_rframe_timeout = 30; +// CONF_radio_timeout_small = 10000000;//10sec +// CONF_signaling_period = 1; +// return SI4463_configure_from_h (SI4463, radio_config_data_10); //} int SI4463_configure_from_20(SI4463_Chip* SI4463) { - unsigned char radio_config_data_20[1250] = RADIO_CONFIGURATION_DATA_ARRAY_20;//22 - //unsigned char radio_config_data_20[1400] = RADIO_CONFIGURATION_DATA_ARRAY; - CONF_TDMA_frame_duration = 560000; - CONF_TDMA_slot_duration = 31600; - CONF_reduced_TDMA_slot_duration = 12700; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 2670; //1090 - CONF_long_preamble_duration_for_TA = 3751;//1420 - CONF_byte_duration = 80; - CONF_preamble_TX_long = 20; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 120;//8sec - CONF_radio_timeout = 60000000; - CONF_radio_timeout_small = 10000000;//10sec previously 20 - CONF_signaling_period = 2;//4 sec - return SI4463_configure_from_h (SI4463, radio_config_data_20); + unsigned char radio_config_data_20[1250] = RADIO_CONFIGURATION_DATA_ARRAY_20;//22 + //unsigned char radio_config_data_20[1400] = RADIO_CONFIGURATION_DATA_ARRAY; + CONF_TDMA_frame_duration = 560000; + CONF_TDMA_slot_duration = 31600; + CONF_reduced_TDMA_slot_duration = 12700; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 2670; //1090 + CONF_long_preamble_duration_for_TA = 3751;//1420 + CONF_byte_duration = 80; + CONF_preamble_TX_long = 20; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 120;//8sec + CONF_radio_timeout = 60000000; + CONF_radio_timeout_small = 10000000;//10sec previously 20 + CONF_signaling_period = 2;//4 sec + return SI4463_configure_from_h (SI4463, radio_config_data_20); } int SI4463_configure_from_11(SI4463_Chip* SI4463) { - unsigned char radio_config_data_11[1250] = RADIO_CONFIGURATION_DATA_ARRAY_11;//22 - //unsigned char radio_config_data_11[1400] = RADIO_CONFIGURATION_DATA_ARRAY;//22 - CONF_TDMA_frame_duration = 537000; - CONF_TDMA_slot_duration = 30250; - CONF_reduced_TDMA_slot_duration = 11700; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 1650; //1090 - CONF_long_preamble_duration_for_TA = 2473;//2292 - CONF_byte_duration = 80; - CONF_preamble_TX_long = 25; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 120;//8sec - CONF_radio_timeout = 60000000; - CONF_radio_timeout_small = 10000000;//10sec previously 20 - CONF_signaling_period = 2;//4sec - return SI4463_configure_from_h (SI4463, radio_config_data_11); + unsigned char radio_config_data_11[1250] = RADIO_CONFIGURATION_DATA_ARRAY_11;//22 + //unsigned char radio_config_data_11[1400] = RADIO_CONFIGURATION_DATA_ARRAY;//22 + CONF_TDMA_frame_duration = 537000; + CONF_TDMA_slot_duration = 30250; + CONF_reduced_TDMA_slot_duration = 11700; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 1650; //1090 + CONF_long_preamble_duration_for_TA = 2473;//2292 + CONF_byte_duration = 80; + CONF_preamble_TX_long = 25; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 120;//8sec + CONF_radio_timeout = 60000000; + CONF_radio_timeout_small = 10000000;//10sec previously 20 + CONF_signaling_period = 2;//4sec + return SI4463_configure_from_h (SI4463, radio_config_data_11); } int SI4463_configure_from_21(SI4463_Chip* SI4463) { - unsigned char radio_config_data_21[1250] = RADIO_CONFIGURATION_DATA_ARRAY_21;//22 - //unsigned char radio_config_data_21[1400] = RADIO_CONFIGURATION_DATA_ARRAY;//22 - CONF_TDMA_frame_duration = 294500; - CONF_TDMA_slot_duration = 16300; - CONF_reduced_TDMA_slot_duration = 7050; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 1550; //1090 - CONF_long_preamble_duration_for_TA = 2370;//1420 - CONF_byte_duration = 30; - CONF_preamble_TX_long = 25; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 90;//6 sec - CONF_radio_timeout = 60000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1;//2sec - return SI4463_configure_from_h (SI4463, radio_config_data_21); + unsigned char radio_config_data_21[1250] = RADIO_CONFIGURATION_DATA_ARRAY_21;//22 + //unsigned char radio_config_data_21[1400] = RADIO_CONFIGURATION_DATA_ARRAY;//22 + CONF_TDMA_frame_duration = 294500; + CONF_TDMA_slot_duration = 16300; + CONF_reduced_TDMA_slot_duration = 7050; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 1550; //1090 + CONF_long_preamble_duration_for_TA = 2370;//1420 + CONF_byte_duration = 30; + CONF_preamble_TX_long = 25; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 90;//6 sec + CONF_radio_timeout = 60000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1;//2sec + return SI4463_configure_from_h (SI4463, radio_config_data_21); } int SI4463_configure_from_12(SI4463_Chip* SI4463) { - unsigned char radio_config_data_12[1250] = RADIO_CONFIGURATION_DATA_ARRAY_12;//22 - CONF_TDMA_frame_duration = 312000; - CONF_TDMA_slot_duration = 17300; - CONF_reduced_TDMA_slot_duration = 7150; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 1030; //1090 - CONF_long_preamble_duration_for_TA = 1765;//1420 - CONF_byte_duration = 45; - CONF_preamble_TX_long = 32; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 100;//6sec - CONF_radio_timeout = 60000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1;//2sec - return SI4463_configure_from_h (SI4463, radio_config_data_12); + unsigned char radio_config_data_12[1250] = RADIO_CONFIGURATION_DATA_ARRAY_12;//22 + CONF_TDMA_frame_duration = 312000; + CONF_TDMA_slot_duration = 17300; + CONF_reduced_TDMA_slot_duration = 7150; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 1030; //1090 + CONF_long_preamble_duration_for_TA = 1765;//1420 + CONF_byte_duration = 45; + CONF_preamble_TX_long = 32; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 100;//6sec + CONF_radio_timeout = 60000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1;//2sec + return SI4463_configure_from_h (SI4463, radio_config_data_12); } int SI4463_configure_from_22(SI4463_Chip* SI4463) { - unsigned char radio_config_data_22[1250] = RADIO_CONFIGURATION_DATA_ARRAY_22;//22 - //unsigned char radio_config_data_22[1400] = RADIO_CONFIGURATION_DATA_ARRAY; - CONF_TDMA_frame_duration = 176000; - CONF_TDMA_slot_duration = 9480; - CONF_reduced_TDMA_slot_duration = 4330; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 890; //1090 - CONF_long_preamble_duration_for_TA = 1708;//1420 - CONF_byte_duration = 23; - CONF_preamble_TX_long = 32; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 60;//4 sec - CONF_radio_timeout = 40000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1; - return SI4463_configure_from_h (SI4463, radio_config_data_22); + unsigned char radio_config_data_22[1250] = RADIO_CONFIGURATION_DATA_ARRAY_22;//22 + //unsigned char radio_config_data_22[1400] = RADIO_CONFIGURATION_DATA_ARRAY; + CONF_TDMA_frame_duration = 176000; + CONF_TDMA_slot_duration = 9480; + CONF_reduced_TDMA_slot_duration = 4330; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 890; //1090 + CONF_long_preamble_duration_for_TA = 1708;//1420 + CONF_byte_duration = 23; + CONF_preamble_TX_long = 32; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 60;//4 sec + CONF_radio_timeout = 40000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1; + return SI4463_configure_from_h (SI4463, radio_config_data_22); } int SI4463_configure_from_13(SI4463_Chip* SI4463) { - unsigned char radio_config_data_13[1250] = RADIO_CONFIGURATION_DATA_ARRAY_13; - CONF_TDMA_frame_duration = 197000; - CONF_TDMA_slot_duration = 10720; - CONF_reduced_TDMA_slot_duration = 4540; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 590; - CONF_long_preamble_duration_for_TA = 1400; - CONF_byte_duration = 27; - CONF_preamble_TX_long = 42; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 60;//4 sec - CONF_radio_timeout = 40000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1; - return SI4463_configure_from_h (SI4463, radio_config_data_13); + unsigned char radio_config_data_13[1250] = RADIO_CONFIGURATION_DATA_ARRAY_13; + CONF_TDMA_frame_duration = 197000; + CONF_TDMA_slot_duration = 10720; + CONF_reduced_TDMA_slot_duration = 4540; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 590; + CONF_long_preamble_duration_for_TA = 1400; + CONF_byte_duration = 27; + CONF_preamble_TX_long = 42; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 60;//4 sec + CONF_radio_timeout = 40000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1; + return SI4463_configure_from_h (SI4463, radio_config_data_13); } int SI4463_configure_from_23(SI4463_Chip* SI4463) { - unsigned char radio_config_data_23[1250] = RADIO_CONFIGURATION_DATA_ARRAY_23;//23 - //unsigned char radio_config_data_23[1500] = RADIO_CONFIGURATION_DATA_ARRAY; - CONF_TDMA_frame_duration = 117000; - CONF_TDMA_slot_duration = 6090; - CONF_reduced_TDMA_slot_duration = 3000; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 570; - CONF_long_preamble_duration_for_TA = 1365; - CONF_byte_duration = 14;//13.3 - CONF_preamble_TX_long = 42; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 30;//30!!! - CONF_radio_timeout = 30000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1; - return SI4463_configure_from_h (SI4463, radio_config_data_23); + unsigned char radio_config_data_23[1250] = RADIO_CONFIGURATION_DATA_ARRAY_23;//23 + //unsigned char radio_config_data_23[1500] = RADIO_CONFIGURATION_DATA_ARRAY; + CONF_TDMA_frame_duration = 117000; + CONF_TDMA_slot_duration = 6090; + CONF_reduced_TDMA_slot_duration = 3000; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 570; + CONF_long_preamble_duration_for_TA = 1365; + CONF_byte_duration = 14;//13.3 + CONF_preamble_TX_long = 42; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 30;//30!!! + CONF_radio_timeout = 30000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1; + return SI4463_configure_from_h (SI4463, radio_config_data_23); } int SI4463_configure_from_14(SI4463_Chip* SI4463) { - unsigned char radio_config_data_14[1250] = RADIO_CONFIGURATION_DATA_ARRAY_14;//14 - CONF_TDMA_frame_duration = 130000; - CONF_TDMA_slot_duration = 6840; - CONF_reduced_TDMA_slot_duration = 3130; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 400; - CONF_long_preamble_duration_for_TA = 1206; - CONF_byte_duration = 16; - CONF_preamble_TX_long = 60; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 30; - CONF_radio_timeout = 30000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1; - return SI4463_configure_from_h (SI4463, radio_config_data_14); + unsigned char radio_config_data_14[1250] = RADIO_CONFIGURATION_DATA_ARRAY_14;//14 + CONF_TDMA_frame_duration = 130000; + CONF_TDMA_slot_duration = 6840; + CONF_reduced_TDMA_slot_duration = 3130; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 400; + CONF_long_preamble_duration_for_TA = 1206; + CONF_byte_duration = 16; + CONF_preamble_TX_long = 60; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 30; + CONF_radio_timeout = 30000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1; + return SI4463_configure_from_h (SI4463, radio_config_data_14); } int SI4463_configure_from_24(SI4463_Chip* SI4463) { - unsigned char radio_config_data_24[1250] = RADIO_CONFIGURATION_DATA_ARRAY_24;//24 - //unsigned char radio_config_data_24[1500] = RADIO_CONFIGURATION_DATA_ARRAY;//24 - CONF_TDMA_frame_duration = 81300;//81300 - CONF_TDMA_slot_duration = 4060; - CONF_reduced_TDMA_slot_duration = 2210; - CONF_TDMA_slot_margin = 300; - CONF_TR_margain = 1300; - CONF_TA_margain = 2000; - CONF_preamble_duration_for_decide = 390; - CONF_long_preamble_duration_for_TA = 1188; - CONF_byte_duration = 8; - CONF_preamble_TX_long = 60; - CONF_preamble_TX_short = 16; - CONF_Tx_rframe_timeout = 30; - CONF_radio_timeout = 30000000; - CONF_radio_timeout_small = 5000000;//5sec previously 10sec - CONF_signaling_period = 1; - return SI4463_configure_from_h (SI4463, radio_config_data_24); + unsigned char radio_config_data_24[1250] = RADIO_CONFIGURATION_DATA_ARRAY_24;//24 + //unsigned char radio_config_data_24[1500] = RADIO_CONFIGURATION_DATA_ARRAY;//24 + CONF_TDMA_frame_duration = 81300;//81300 + CONF_TDMA_slot_duration = 4060; + CONF_reduced_TDMA_slot_duration = 2210; + CONF_TDMA_slot_margin = 300; + CONF_TR_margain = 1300; + CONF_TA_margain = 2000; + CONF_preamble_duration_for_decide = 390; + CONF_long_preamble_duration_for_TA = 1188; + CONF_byte_duration = 8; + CONF_preamble_TX_long = 60; + CONF_preamble_TX_short = 16; + CONF_Tx_rframe_timeout = 30; + CONF_radio_timeout = 30000000; + CONF_radio_timeout_small = 5000000;//5sec previously 10sec + CONF_signaling_period = 1; + return SI4463_configure_from_h (SI4463, radio_config_data_24); } int SI4463_configure_from_h(SI4463_Chip* SI4463, unsigned char* radio_config_data) { - - int i=0; - int answer_loc; - int answer; - int current_command_length; - answer = 1; - do { - current_command_length = radio_config_data[i]; - i++; - if (current_command_length>0) { - SI4463_send_command(SI4463, radio_config_data+i, current_command_length); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 30000);//15000 30000 - if (answer_loc == 0) {answer = 0;} - } - + + int i=0; + int answer_loc; + int answer; + int current_command_length; + answer = 1; + do { + current_command_length = radio_config_data[i]; + i++; + if (current_command_length>0) { + SI4463_send_command(SI4463, radio_config_data+i, current_command_length); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 30000);//15000 30000 + if (answer_loc == 0) {answer = 0;} + } + - i = i + current_command_length; - // - } while ( (current_command_length > 0) && (answer == 1) ); - wait_ms(5); - - // specific GLOBAL_CONFIG : SEQUENCER_MODE=GUARANTEED and FIFO_MODE=FIFO_129 - unsigned char radio_config_bis[10] = {0x11, 0x00, 0x01, 0x03, 0x10}; - SI4463_send_command(SI4463, radio_config_bis, 5); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800);//200 - if (answer_loc == 0) {answer = 0;} - wait_ms(5);//50 - - // specific Max size field 2 - unsigned char radio_config_ter[10] = {0x11, 0x12, 0x02, 0x11, 0x00, 0xFF}; - radio_config_ter[4] = (SI4463_CONF_max_field2_size & 0x1F00 )/ 0x100 ; - radio_config_ter[5] = SI4463_CONF_max_field2_size & 0x00FF; - SI4463_send_command(SI4463, radio_config_ter, 6); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); - if (answer_loc == 0) {answer = 0;} - wait_ms(5);//50 - - //specific FIFO Threshold - unsigned char radio_config_quart[10] = {0x11, 0x12, 0x02, 0x0B, 0x30, 0x64}; - radio_config_quart[4] = SI4463_CONF_TX_FIFO_threshold & 0x7F;// ajout 30 mai - radio_config_quart[5] = SI4463_CONF_RX_FIFO_threshold & 0x7F; - SI4463_send_command(SI4463, radio_config_quart, 6); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); - if (answer_loc == 0) {answer = 0;} - wait_ms(5);//50 - - //specific SYNC WORD depending on 'radio network ID' - unsigned char hash_netID[20] = {0x33, 0x36, 0x39, 0x3c, 0x63, 0x66, 0x69, 0x6c, 0x93, 0x96, 0x99, 0x9c, 0xc3, 0xc6, 0xc9, 0xcc}; - unsigned char radio_config_quint[12] = {0x11, 0x11, 0x01, 0x03, 0xCC}; - radio_config_quint[4] = hash_netID[CONF_radio_network_ID]; - SI4463_send_command(SI4463, radio_config_quint, 5);//10 - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); - answer_loc = 1; - if (answer_loc == 0) {answer = 0;} - wait_ms(5);//5 - - //specific power - unsigned char radio_config_sixt[10] = {0x11, 0x22, 0x01, 0x01, 0x7F}; - radio_config_sixt[4] = CONF_radio_PA_PWR & 0x7F; - SI4463_send_command(SI4463, radio_config_sixt, 5); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); - if (answer_loc == 0) {answer = 0;} - wait_ms(5);//5 - - return answer; + i = i + current_command_length; + // + } while ( (current_command_length > 0) && (answer == 1) ); + wait_ms(5); + + // specific GLOBAL_CONFIG : SEQUENCER_MODE=GUARANTEED and FIFO_MODE=FIFO_129 + unsigned char radio_config_bis[10] = {0x11, 0x00, 0x01, 0x03, 0x10}; + SI4463_send_command(SI4463, radio_config_bis, 5); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800);//200 + if (answer_loc == 0) {answer = 0;} + wait_ms(5);//50 + + // specific Max size field 2 + unsigned char radio_config_ter[10] = {0x11, 0x12, 0x02, 0x11, 0x00, 0xFF}; + radio_config_ter[4] = (SI4463_CONF_max_field2_size & 0x1F00 )/ 0x100 ; + radio_config_ter[5] = SI4463_CONF_max_field2_size & 0x00FF; + SI4463_send_command(SI4463, radio_config_ter, 6); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); + if (answer_loc == 0) {answer = 0;} + wait_ms(5);//50 + + //specific FIFO Threshold + unsigned char radio_config_quart[10] = {0x11, 0x12, 0x02, 0x0B, 0x30, 0x64}; + radio_config_quart[4] = SI4463_CONF_TX_FIFO_threshold & 0x7F;// ajout 30 mai + radio_config_quart[5] = SI4463_CONF_RX_FIFO_threshold & 0x7F; + SI4463_send_command(SI4463, radio_config_quart, 6); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); + if (answer_loc == 0) {answer = 0;} + wait_ms(5);//50 + + //specific SYNC WORD depending on 'radio network ID' + unsigned char hash_netID[20] = {0x33, 0x36, 0x39, 0x3c, 0x63, 0x66, 0x69, 0x6c, 0x93, 0x96, 0x99, 0x9c, 0xc3, 0xc6, 0xc9, 0xcc}; + unsigned char radio_config_quint[12] = {0x11, 0x11, 0x01, 0x03, 0xCC}; + radio_config_quint[4] = hash_netID[CONF_radio_network_ID]; + SI4463_send_command(SI4463, radio_config_quint, 5);//10 + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); + answer_loc = 1; + if (answer_loc == 0) {answer = 0;} + wait_ms(5);//5 + + //specific power + unsigned char radio_config_sixt[10] = {0x11, 0x22, 0x01, 0x01, 0x7F}; + radio_config_sixt[4] = CONF_radio_PA_PWR & 0x7F; + SI4463_send_command(SI4463, radio_config_sixt, 5); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 800); + if (answer_loc == 0) {answer = 0;} + wait_ms(5);//5 + + return answer; } int SI4463_set_power(SI4463_Chip* SI4463) { - int answer, answer_loc; - unsigned char radio_config_sixt[10] = {0x11, 0x22, 0x01, 0x01, 0x7F}; - radio_config_sixt[4] = CONF_radio_PA_PWR & 0x7F; - SI4463_send_command(SI4463, radio_config_sixt, 5); - answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 200); - if (answer_loc == 0) {answer = 0;} - wait_ms(5); - return answer; + int answer, answer_loc; + unsigned char radio_config_sixt[10] = {0x11, 0x22, 0x01, 0x01, 0x7F}; + radio_config_sixt[4] = CONF_radio_PA_PWR & 0x7F; + SI4463_send_command(SI4463, radio_config_sixt, 5); + answer_loc = SI4463_CTS_read_answer(SI4463, SI_trash, 0, 200); + if (answer_loc == 0) {answer = 0;} + wait_ms(5); + return answer; } void SI4463_print_version(SI4463_Chip* SI4463) { - int i; - unsigned char command [10]; - unsigned char answer [12]; - command[0] = 0x01;//part info - SI4463_send_command(SI4463, command, 1); - SI4463_CTS_read_answer(SI4463, answer, 8, 200); - HMI_printf("part info: "); - for (i=0; i<8; i++) { - HMI_printf("%02X ",answer[i]); - } - printf("\r\n"); - - command[0] = 0x10;//function info - SI4463_send_command(SI4463, command, 1); - SI4463_CTS_read_answer(SI4463, answer, 8, 200); - HMI_printf("function info: "); - for (i=0; i<6; i++) { - HMI_printf("%02X ",answer[i]); - } - printf("\r\n"); + int i; + unsigned char command [10]; + unsigned char answer [12]; + command[0] = 0x01;//part info + SI4463_send_command(SI4463, command, 1); + SI4463_CTS_read_answer(SI4463, answer, 8, 200); + HMI_printf("part info: "); + for (i=0; i<8; i++) { + HMI_printf("%02X ",answer[i]); + } + printf("\r\n"); + + command[0] = 0x10;//function info + SI4463_send_command(SI4463, command, 1); + SI4463_CTS_read_answer(SI4463, answer, 8, 200); + HMI_printf("function info: "); + for (i=0; i<6; i++) { + HMI_printf("%02X ",answer[i]); + } + printf("\r\n"); } void SI4463_FIFO_status(SI4463_Chip* SI4463, int* RX_FIFO_count, int* TX_FIFO_count, int reset) { - unsigned char command[10]; - unsigned char answer[10]; - command[0] = 0x15; - if (reset == 1) { - command[1] = 0x03; - } else { - command[1] = 0x00; - } - SI4463_send_command (SI4463, command, 2); - SI4463_CTS_read_answer (SI4463, answer, 2, 5); - *RX_FIFO_count = answer[0]; - *TX_FIFO_count = answer[1]; + unsigned char command[10]; + unsigned char answer[10]; + command[0] = 0x15; + if (reset == 1) { + command[1] = 0x03; + } else { + command[1] = 0x00; + } + SI4463_send_command (SI4463, command, 2); + SI4463_CTS_read_answer (SI4463, answer, 2, 5); + *RX_FIFO_count = answer[0]; + *TX_FIFO_count = answer[1]; } // a supprimer void SI4463_FIFO_write(SI4463_Chip* SI4463, unsigned char* data, int size) { - static unsigned char trash [200]; - unsigned char command[6]; - command[0] = 0x66; - SI4463->cs->write(0); - SI4463->spi->transfer_2 (command, 1, trash, 1); - SI4463->spi->transfer_2 (data, size, trash, size); - SI4463->cs->write(1); - wait_us(1); + static unsigned char trash [200]; + unsigned char command[6]; + command[0] = 0x66; + SI4463->cs->write(0); + SI4463->spi->transfer_2 (command, 1, trash, 1); + SI4463->spi->transfer_2 (data, size, trash, size); + SI4463->cs->write(1); + wait_us(1); } void SI4463_FIFO_read (SI4463_Chip* SI4463, unsigned char* data, int size) { - unsigned char trash [200]; //static - unsigned char command[6]; - command[0] = 0x77; - SI4463->cs->write(0); - SI4463->spi->transfer_2 (command, 1, trash, 1); - SI4463->spi->transfer_2 (trash, size, data, size); - SI4463->cs->write(1); - wait_us(1); + unsigned char trash [200]; //static + unsigned char command[6]; + command[0] = 0x77; + SI4463->cs->write(0); + SI4463->spi->transfer_2 (command, 1, trash, 1); + SI4463->spi->transfer_2 (trash, size, data, size); + SI4463->cs->write(1); + wait_us(1); } //fin a supprimer void SI4463_change_state (SI4463_Chip* SI4463, unsigned char new_state) { - unsigned char command[6]; - command[0] = 0x34; - command[1] = new_state; - SI4463_send_command(SI4463, command, 2); - SI4463_CTS_read_answer (SI4463, command, 0, 30); + unsigned char command[6]; + command[0] = 0x34; + command[1] = new_state; + SI4463_send_command(SI4463, command, 2); + SI4463_CTS_read_answer (SI4463, command, 0, 30); } void SI4463_start_RX (SI4463_Chip* SI4463, unsigned char channel) { - static unsigned char command[12] = {0x32, 0, 0, 0, 0, 0x08, 0x08, 0x08}; - command[1] = channel; - SI4463_send_command(SI4463, command, 8); - SI4463_CTS_read_answer (SI4463, command, 0, 55); + static unsigned char command[12] = {0x32, 0, 0, 0, 0, 0x08, 0x08, 0x08}; + command[1] = channel; + SI4463_send_command(SI4463, command, 8); + SI4463_CTS_read_answer (SI4463, command, 0, 55); } void SI4463_start_TX (SI4463_Chip* SI4463, unsigned char channel, unsigned int size) { - static unsigned char command[12] = {0x31, 0, 0x50, 0, 0, 0, 0}; - - command[1] = channel; - command[3] = (size & 0x1F00) >> 8; - command[4] = size & 0xFF; - SI4463_send_command(SI4463, command, 8); + static unsigned char command[12] = {0x31, 0, 0x50, 0, 0, 0, 0}; + + command[1] = channel; + command[3] = (size & 0x1F00) >> 8; + command[4] = size & 0xFF; + SI4463_send_command(SI4463, command, 8); } void SI4463_read_FRR(SI4463_Chip* SI4463, unsigned char* data) { - unsigned char command[8]; - unsigned char loc_answer[8]; - int i; - command[0] = 0x50; - SI4463->cs->write(0); - SI4463->spi->transfer_2(command, 5, loc_answer, 5); - SI4463->cs->write(1); - wait_us(1); - for (i=0; i<4; i++) { - data[i] = loc_answer[i+1]; - } + unsigned char command[8]; + unsigned char loc_answer[8]; + int i; + command[0] = 0x50; + SI4463->cs->write(0); + SI4463->spi->transfer_2(command, 5, loc_answer, 5); + SI4463->cs->write(1); + wait_us(1); + for (i=0; i<4; i++) { + data[i] = loc_answer[i+1]; + } } int SI4463_get_state(SI4463_Chip* SI4463) { - unsigned char command[8]; - unsigned char loc_answer[8]; - command[0] = 0x33; - SI4463_send_command(SI4463, command, 1); - SI4463_CTS_read_answer (SI4463, loc_answer, 2, 55);//!!! previous 5 / 2020_02_22 - return loc_answer[0]; + unsigned char command[8]; + unsigned char loc_answer[8]; + command[0] = 0x33; + SI4463_send_command(SI4463, command, 1); + SI4463_CTS_read_answer (SI4463, loc_answer, 2, 55);//!!! previous 5 / 2020_02_22 + return loc_answer[0]; } void SI4463_clear_IT(SI4463_Chip* SI4463, unsigned char PH_clear, unsigned char modem_clear) { - unsigned char command[8]; - //unsigned char loc_answer[8]; - - command[0] = 0x20; // GET_INT - //command[1] = 0x00; - command[1] = PH_clear; - command[2] = modem_clear; - command[3] = 0x00; - - SI4463_send_command(SI4463, command, 4); - //wait_us(20); - //SI4463_CTS_read_answer (SI4463, loc_answer, 2, 5); - //return loc_answer[0]; + unsigned char command[8]; + //unsigned char loc_answer[8]; + + command[0] = 0x20; // GET_INT + //command[1] = 0x00; + command[1] = PH_clear; + command[2] = modem_clear; + command[3] = 0x00; + + SI4463_send_command(SI4463, command, 4); + //wait_us(20); + //SI4463_CTS_read_answer (SI4463, loc_answer, 2, 5); + //return loc_answer[0]; } void SI4463_set_TX_preamble_length (SI4463_Chip* SI4463, unsigned char preamble_length_val) { - unsigned char trash [10]; - unsigned char command_preamble_length[10] = {0x11, 0x10, 0x01, 0x00, 0x20}; + unsigned char trash [10]; + unsigned char command_preamble_length[10] = {0x11, 0x10, 0x01, 0x00, 0x20}; - command_preamble_length [4] = preamble_length_val; - SI4463_send_command(G_SI4463, command_preamble_length, 5); - wait_us(20); // !!! - SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); + command_preamble_length [4] = preamble_length_val; + SI4463_send_command(G_SI4463, command_preamble_length, 5); + wait_us(20); // !!! + SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); } int SI4463_read_temperature(SI4463_Chip* SI4463) { - int temperature; - unsigned char answer_loc [10]; - unsigned char command_temp_read[10] = {0x14, 0x10, 0xA0}; - SI4463_send_command(SI4463, command_temp_read, 3); - //wait_ms(2); - wait_us(20); - if (SI4463_CTS_read_answer(SI4463, answer_loc, 6, 2000) ) { - temperature = answer_loc[4] * 256 + answer_loc[5]; - temperature = temperature * 0.2195 - 293; - } else { - temperature = 0xFFFF; - } - return temperature; + int temperature; + unsigned char answer_loc [10]; + unsigned char command_temp_read[10] = {0x14, 0x10, 0xA0}; + SI4463_send_command(SI4463, command_temp_read, 3); + //wait_ms(2); + wait_us(20); + if (SI4463_CTS_read_answer(SI4463, answer_loc, 6, 2000) ) { + temperature = answer_loc[4] * 256 + answer_loc[5]; + temperature = temperature * 0.2195 - 293; + } else { + temperature = 0xFFFF; + } + return temperature; } static int previous_temperature = 300; void SI4463_periodic_temperature_check(SI4463_Chip* SI4463) { - // int need_recalibrate; - int delta_temperature; - int i; - - //RADIO_off_if_necessary(0); - G_temperature_SI4463 = SI4463_read_temperature (SI4463); - if (previous_temperature == 300) { - previous_temperature = G_temperature_SI4463; - } - delta_temperature = G_temperature_SI4463 - previous_temperature; - if ( ( delta_temperature > 14) || (delta_temperature < -14) ) { - //if (1) { - // need_recalibrate = 1; - i = SI4463_configure_all(); - previous_temperature = G_temperature_SI4463; - if (i == 0) {//fail to recalibrate - NVIC_SystemReset(); - } - // } else { - // need_recalibrate = 0; - } - //RADIO_restart_if_necessary(0, need_recalibrate, 0); //0,need,0 + // int need_recalibrate; + int delta_temperature; + int i; + + //RADIO_off_if_necessary(0); + G_temperature_SI4463 = SI4463_read_temperature (SI4463); + if (previous_temperature == 300) { + previous_temperature = G_temperature_SI4463; + } + delta_temperature = G_temperature_SI4463 - previous_temperature; + if ( ( delta_temperature > 14) || (delta_temperature < -14) ) { + //if (1) { + // need_recalibrate = 1; + i = SI4463_configure_all(); + previous_temperature = G_temperature_SI4463; + if (i == 0) {//fail to recalibrate + NVIC_SystemReset(); + } + // } else { + // need_recalibrate = 0; + } + //RADIO_restart_if_necessary(0, need_recalibrate, 0); //0,need,0 } static unsigned int RX_size_remaining = 0; void SI4463_periodic_temperature_check_2(void) { - unsigned long int timer_snapshot; - int delta_temperature; - int i; - unsigned char trash [10]; - timer_snapshot = GLOBAL_timer.read_us(); - if ( (is_TDMA_master) && (CONF_master_FDD == 2) && (CONF_radio_state_ON_OFF) ) { - SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, 500000);//simulates TX transition - } - else if ( (is_TDMA_master) && (CONF_radio_state_ON_OFF) && ((timer_snapshot-last_rframe_seen) > (CONF_radio_timeout+1000000) ) ) { - //if (G_need_temperature_check == 1) { - G_need_temperature_check = 0; - if (previous_temperature == 300) { - previous_temperature = G_temperature_SI4463; - } - G_temperature_SI4463 = SI4463_read_temperature (G_SI4463); - delta_temperature = G_temperature_SI4463 - previous_temperature; - if ( ( delta_temperature > 14) || (delta_temperature < -14) ) { - previous_temperature = G_temperature_SI4463; - G_SI4463->RX_TX_state = 0; - //SI4463_change_state(G_SI4463, 0x03); //switch to ready - RX_FIFO_WR_point = RX_FIFO_last_received; // rewind WR_pointer to last complete packet - //SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO - //SI4463_clear_IT (G_SI4463, 0, 0); - i = SI4463_configure_all(); - if (i == 0) {//fail to recalibrate - NVIC_SystemReset(); - } - //SI4463_start_RX(G_SI4463, CONF_radio_frequency); - SI4463_start_RX(G_SI4463, CONF_channel_RX); - SI4463_clear_IT (G_SI4463, 0, 0); - SI4463_CTS_read_answer (G_SI4463, trash, 2, 5);// ADDED 2018 08 25 - RX_size_remaining = 0; - G_SI4463->RX_TX_state = 1; // activate RX HW IRQ - } - //} - } + unsigned long int timer_snapshot; + int delta_temperature; + int i; + unsigned char trash [10]; + timer_snapshot = GLOBAL_timer.read_us(); + if ( (is_TDMA_master) && (CONF_master_FDD == 2) && (CONF_radio_state_ON_OFF) ) { + SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, 500000);//simulates TX transition + } + else if ( (is_TDMA_master) && (CONF_radio_state_ON_OFF) && ((timer_snapshot-last_rframe_seen) > (CONF_radio_timeout+1000000) ) ) { + //if (G_need_temperature_check == 1) { + G_need_temperature_check = 0; + if (previous_temperature == 300) { + previous_temperature = G_temperature_SI4463; + } + G_temperature_SI4463 = SI4463_read_temperature (G_SI4463); + delta_temperature = G_temperature_SI4463 - previous_temperature; + if ( ( delta_temperature > 14) || (delta_temperature < -14) ) { + previous_temperature = G_temperature_SI4463; + G_SI4463->RX_TX_state = 0; + //SI4463_change_state(G_SI4463, 0x03); //switch to ready + RX_FIFO_WR_point = RX_FIFO_last_received; // rewind WR_pointer to last complete packet + //SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO + //SI4463_clear_IT (G_SI4463, 0, 0); + i = SI4463_configure_all(); + if (i == 0) {//fail to recalibrate + NVIC_SystemReset(); + } + //SI4463_start_RX(G_SI4463, CONF_radio_frequency); + SI4463_start_RX(G_SI4463, CONF_channel_RX); + SI4463_clear_IT (G_SI4463, 0, 0); + SI4463_CTS_read_answer (G_SI4463, trash, 2, 5);// ADDED 2018 08 25 + RX_size_remaining = 0; + G_SI4463->RX_TX_state = 1; // activate RX HW IRQ + } + //} + } } //void SI4463_temp_check_init(void) { -// SI4463_temp_check2_call.attach(&SI4463_periodic_temperature_check_2, 10);//periodic 10 seconds +// SI4463_temp_check2_call.attach(&SI4463_periodic_temperature_check_2, 10);//periodic 10 seconds //} void SI4463_FIFO_RX_transfer(unsigned int size) { - //unsigned char trash[150]; //static + //unsigned char trash[150]; //static - int size_to_read; + int size_to_read; - if ( ( (RX_FIFO_WR_point & RX_FIFO_mask) + size) > RX_FIFO_mask) { // to big for 1 step - size_to_read = (RX_FIFO_mask + 1 - (RX_FIFO_WR_point & RX_FIFO_mask) ); - G_SI4463->spi->transfer_2 (SI_trash, size_to_read, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size_to_read); - RX_FIFO_WR_point = RX_FIFO_WR_point + size_to_read; // should become ZERO - //second step - size_to_read = size - size_to_read; - G_SI4463->spi->transfer_2 (SI_trash, size_to_read, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size_to_read); - RX_FIFO_WR_point = RX_FIFO_WR_point + size_to_read; - } else { //1 step is enough - - G_SI4463->spi->transfer_2 (SI_trash, size, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size); - RX_FIFO_WR_point = RX_FIFO_WR_point + size; - } + if ( ( (RX_FIFO_WR_point & RX_FIFO_mask) + size) > RX_FIFO_mask) { // to big for 1 step + size_to_read = (RX_FIFO_mask + 1 - (RX_FIFO_WR_point & RX_FIFO_mask) ); + G_SI4463->spi->transfer_2 (SI_trash, size_to_read, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size_to_read); + RX_FIFO_WR_point = RX_FIFO_WR_point + size_to_read; // should become ZERO + //second step + size_to_read = size - size_to_read; + G_SI4463->spi->transfer_2 (SI_trash, size_to_read, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size_to_read); + RX_FIFO_WR_point = RX_FIFO_WR_point + size_to_read; + } else { //1 step is enough + + G_SI4463->spi->transfer_2 (SI_trash, size, RX_FIFO_data + (RX_FIFO_WR_point & RX_FIFO_mask), size); + RX_FIFO_WR_point = RX_FIFO_WR_point + size; + } } void SI4463_FIFO_TX_transfer(unsigned int size) { - //unsigned char trash[150]; //static - unsigned char command[5]; - // int size_to_write; - G_SI4463->cs->write(0); - command[0] = 0x66; - G_SI4463->spi->transfer_2 (command, 1, SI_trash, 1); - G_SI4463->spi->transfer_2 (TX_frame_to_send, size, SI_trash, size); - TX_frame_to_send = TX_frame_to_send + size; - G_SI4463->cs->write(1); + //unsigned char trash[150]; //static + unsigned char command[5]; + // int size_to_write; + G_SI4463->cs->write(0); + command[0] = 0x66; + G_SI4463->spi->transfer_2 (command, 1, SI_trash, 1); + G_SI4463->spi->transfer_2 (TX_frame_to_send, size, SI_trash, size); + TX_frame_to_send = TX_frame_to_send + size; + G_SI4463->cs->write(1); } void SI4463_RX_HOP(void) { - //G_SI4463->RX_LED->write(1); - SI4463_send_command(G_SI4463, CONF_SI4463_freq_conf_RX, 7); - wait_us(20); - SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 50); - wait_us(20); - //G_SI4463->RX_LED->write(0); + //G_SI4463->RX_LED->write(1); + SI4463_send_command(G_SI4463, CONF_SI4463_freq_conf_RX, 7); + wait_us(20); + SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 50); + wait_us(20); + //G_SI4463->RX_LED->write(0); } void SI4463_TX_HOP(void) { - //G_SI4463->RX_LED->write(1); - SI4463_send_command(G_SI4463, CONF_SI4463_freq_conf_TX, 9); - wait_us(20); - SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 50); - wait_us(20); - //G_SI4463->RX_LED->write(0); + //G_SI4463->RX_LED->write(1); + SI4463_send_command(G_SI4463, CONF_SI4463_freq_conf_TX, 9); + wait_us(20); + SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 50); + wait_us(20); + //G_SI4463->RX_LED->write(0); } // High level functions @@ -676,140 +676,140 @@ void SI4463_TX_HOP(void) { static unsigned int time_STOP_TX_burst; void SI4463_RX_IT() { - static unsigned char RX_small[10]; - static unsigned char TX_small[10]; - - static unsigned char FRR[5]; - static unsigned int RX_timer; - static unsigned char RSSI; - int IT_SYNC_detected; - int IT_FIFO_almost_full; - int IT_pckt_RX; - //What has been treated - int Treated_SYNC_detected; - int Treated_FIFO_almost_full; - int Treated_pckt_RX; - // synthesis - int Synth_SYNC_detected; - int Synth_FIFO_almost_full; - int Synth_pckt_RX; - - unsigned int size_to_read; - int IT_state; - int toto; - unsigned int timer_snapshot; - int t_rehabilit_interrupt; - unsigned char clear_IT_PH; - unsigned char clear_IT_modem; - - Treated_SYNC_detected = 0; - Treated_FIFO_almost_full = 0; - Treated_pckt_RX = 0; - - timer_snapshot = GLOBAL_timer.read_us(); - wait_us(10);//for RSSI propagation (measure at sync detect) - do { - SI4463_read_FRR (G_SI4463, FRR); - IT_SYNC_detected = FRR[1] & 0x01; - IT_FIFO_almost_full = FRR[0] & 0x01; - IT_pckt_RX = (FRR[0] & 0x10) / 0x10; - Synth_SYNC_detected = IT_SYNC_detected ^ Treated_SYNC_detected; //Xor - Synth_FIFO_almost_full = IT_FIFO_almost_full ^ Treated_FIFO_almost_full; - Synth_pckt_RX = IT_pckt_RX ^ Treated_pckt_RX; - - toto = *(G_SI4463->interrupt); - if (Synth_SYNC_detected) {//Sync detected - RSSI = FRR[2]; - RX_timer = timer_snapshot - CONF_long_preamble_duration_for_TA; - if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {//Master UP - RX_timer = RX_timer - TDMA_slave_last_master_top; - } - Treated_SYNC_detected = 1; - RSSI_total_stat = RSSI_total_stat + RSSI; - RSSI_stat_pkt_nb++; - G_SI4463->RX_LED->write(1); - } - - if (Synth_FIFO_almost_full || Synth_pckt_RX) { //FIFO full or RX complete - if ( (RX_size_remaining == 0) && (Treated_FIFO_almost_full == 0) && (Treated_pckt_RX == 0) ) { //beginning of new packet - // read first byte of packet : size - TX_small[0] = 0x77; - TX_small[1] = toto; - G_SI4463->cs->write(0); - G_SI4463->spi->transfer_2 (TX_small, 2, RX_small, 2); - RX_size_remaining = RX_small[1] + SI4463_offset_size; - if (RX_size_remaining > SI4463_CONF_max_field2_size ) { - RX_size_remaining = SI4463_CONF_max_field2_size; - } - if (RX_size_remaining > (SI4463_CONF_RX_FIFO_threshold - 1)) { //too big //+10 - size_to_read = SI4463_CONF_RX_FIFO_threshold - 1; //+10 - } else { - size_to_read = RX_size_remaining; - } - if (Synth_pckt_RX) { // force to read all remaining if full packet received - size_to_read = RX_size_remaining; - G_SI4463->RX_LED->write(0); - } + static unsigned char RX_small[10]; + static unsigned char TX_small[10]; + + static unsigned char FRR[5]; + static unsigned int RX_timer; + static unsigned char RSSI; + int IT_SYNC_detected; + int IT_FIFO_almost_full; + int IT_pckt_RX; + //What has been treated + int Treated_SYNC_detected; + int Treated_FIFO_almost_full; + int Treated_pckt_RX; + // synthesis + int Synth_SYNC_detected; + int Synth_FIFO_almost_full; + int Synth_pckt_RX; + + unsigned int size_to_read; + int IT_state; + int toto; + unsigned int timer_snapshot; + int t_rehabilit_interrupt; + unsigned char clear_IT_PH; + unsigned char clear_IT_modem; + + Treated_SYNC_detected = 0; + Treated_FIFO_almost_full = 0; + Treated_pckt_RX = 0; + + timer_snapshot = GLOBAL_timer.read_us(); + wait_us(10);//for RSSI propagation (measure at sync detect) + do { + SI4463_read_FRR (G_SI4463, FRR); + IT_SYNC_detected = FRR[1] & 0x01; + IT_FIFO_almost_full = FRR[0] & 0x01; + IT_pckt_RX = (FRR[0] & 0x10) / 0x10; + Synth_SYNC_detected = IT_SYNC_detected ^ Treated_SYNC_detected; //Xor + Synth_FIFO_almost_full = IT_FIFO_almost_full ^ Treated_FIFO_almost_full; + Synth_pckt_RX = IT_pckt_RX ^ Treated_pckt_RX; + + toto = *(G_SI4463->interrupt); + if (Synth_SYNC_detected) {//Sync detected + RSSI = FRR[2]; + RX_timer = timer_snapshot - CONF_long_preamble_duration_for_TA; + if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {//Master UP + RX_timer = RX_timer - TDMA_slave_last_master_top; + } + Treated_SYNC_detected = 1; + RSSI_total_stat = RSSI_total_stat + RSSI; + RSSI_stat_pkt_nb++; + G_SI4463->RX_LED->write(1); + } + + if (Synth_FIFO_almost_full || Synth_pckt_RX) { //FIFO full or RX complete + if ( (RX_size_remaining == 0) && (Treated_FIFO_almost_full == 0) && (Treated_pckt_RX == 0) ) { //beginning of new packet + // read first byte of packet : size + TX_small[0] = 0x77; + TX_small[1] = toto; + G_SI4463->cs->write(0); + G_SI4463->spi->transfer_2 (TX_small, 2, RX_small, 2); + RX_size_remaining = RX_small[1] + SI4463_offset_size; + if (RX_size_remaining > SI4463_CONF_max_field2_size ) { + RX_size_remaining = SI4463_CONF_max_field2_size; + } + if (RX_size_remaining > (SI4463_CONF_RX_FIFO_threshold - 1)) { //too big //+10 + size_to_read = SI4463_CONF_RX_FIFO_threshold - 1; //+10 + } else { + size_to_read = RX_size_remaining; + } + if (Synth_pckt_RX) { // force to read all remaining if full packet received + size_to_read = RX_size_remaining; + G_SI4463->RX_LED->write(0); + } - RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RX_timer & 0xFF; //LSB - RX_FIFO_WR_point++; - RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = (RX_timer & 0xFF00) / 0x100; - RX_FIFO_WR_point++; - RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = (RX_timer & 0xFF0000) / 0x10000; //MSB - RX_FIFO_WR_point++; - RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RSSI; //RSSI - RX_FIFO_WR_point++; - RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RX_small[1]; //Size. Warning, with negative offset - RX_FIFO_WR_point++; - //read remaining - SI4463_FIFO_RX_transfer(size_to_read); - G_SI4463->cs->write(1); - wait_us(1); - RX_size_remaining = RX_size_remaining - size_to_read; - } - else { // middle or end of a packet - if (RX_size_remaining > SI4463_CONF_RX_FIFO_threshold ) { //too big //+10 - size_to_read = SI4463_CONF_RX_FIFO_threshold ;//+10 - } else { - size_to_read = RX_size_remaining; - } - if (Synth_pckt_RX) { // force to read all remaining if full packet received - size_to_read = RX_size_remaining; - G_SI4463->RX_LED->write(0); - } - if (RX_size_remaining > 0) { //avoid useless FIFO reading - TX_small[0] = 0x77; - G_SI4463->cs->write(0); - G_SI4463->spi->transfer_2 (TX_small, 1, RX_small, 1); - SI4463_FIFO_RX_transfer(size_to_read); - G_SI4463->cs->write(1); - wait_us(1); - RX_size_remaining = RX_size_remaining - size_to_read; - } - } - if (RX_size_remaining == 0) { //packet is full, - RX_FIFO_last_received = RX_FIFO_WR_point; - } - Treated_FIFO_almost_full = IT_FIFO_almost_full; - Treated_pckt_RX = IT_pckt_RX; - } - clear_IT_PH = ~(Treated_FIFO_almost_full * 0x01 + Treated_pckt_RX * 0x10); - clear_IT_modem = ~(Treated_SYNC_detected * 0x01); - SI4463_clear_IT(G_SI4463, clear_IT_PH, clear_IT_modem); - // checks if new IT has triggered in the meantime - if (IT_SYNC_detected) { //removed 2019_06_16 - IT_state = 1; // impossible to have immediate new IT - } else { - t_rehabilit_interrupt = 0; - IT_state = G_SI4463->interrupt->read(); - while ( (t_rehabilit_interrupt<18) && (IT_state == 0) ) { - wait_us(1); - IT_state = G_SI4463->interrupt->read(); - t_rehabilit_interrupt++; - } - } - } while (IT_state == 0); - + RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RX_timer & 0xFF; //LSB + RX_FIFO_WR_point++; + RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = (RX_timer & 0xFF00) / 0x100; + RX_FIFO_WR_point++; + RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = (RX_timer & 0xFF0000) / 0x10000; //MSB + RX_FIFO_WR_point++; + RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RSSI; //RSSI + RX_FIFO_WR_point++; + RX_FIFO_data[RX_FIFO_WR_point & RX_FIFO_mask] = RX_small[1]; //Size. Warning, with negative offset + RX_FIFO_WR_point++; + //read remaining + SI4463_FIFO_RX_transfer(size_to_read); + G_SI4463->cs->write(1); + wait_us(1); + RX_size_remaining = RX_size_remaining - size_to_read; + } + else { // middle or end of a packet + if (RX_size_remaining > SI4463_CONF_RX_FIFO_threshold ) { //too big //+10 + size_to_read = SI4463_CONF_RX_FIFO_threshold ;//+10 + } else { + size_to_read = RX_size_remaining; + } + if (Synth_pckt_RX) { // force to read all remaining if full packet received + size_to_read = RX_size_remaining; + G_SI4463->RX_LED->write(0); + } + if (RX_size_remaining > 0) { //avoid useless FIFO reading + TX_small[0] = 0x77; + G_SI4463->cs->write(0); + G_SI4463->spi->transfer_2 (TX_small, 1, RX_small, 1); + SI4463_FIFO_RX_transfer(size_to_read); + G_SI4463->cs->write(1); + wait_us(1); + RX_size_remaining = RX_size_remaining - size_to_read; + } + } + if (RX_size_remaining == 0) { //packet is full, + RX_FIFO_last_received = RX_FIFO_WR_point; + } + Treated_FIFO_almost_full = IT_FIFO_almost_full; + Treated_pckt_RX = IT_pckt_RX; + } + clear_IT_PH = ~(Treated_FIFO_almost_full * 0x01 + Treated_pckt_RX * 0x10); + clear_IT_modem = ~(Treated_SYNC_detected * 0x01); + SI4463_clear_IT(G_SI4463, clear_IT_PH, clear_IT_modem); + // checks if new IT has triggered in the meantime + if (IT_SYNC_detected) { //removed 2019_06_16 + IT_state = 1; // impossible to have immediate new IT + } else { + t_rehabilit_interrupt = 0; + IT_state = G_SI4463->interrupt->read(); + while ( (t_rehabilit_interrupt<18) && (IT_state == 0) ) { + wait_us(1); + IT_state = G_SI4463->interrupt->read(); + t_rehabilit_interrupt++; + } + } + } while (IT_state == 0); + } //static int already_inside_IT = 0; @@ -818,587 +818,587 @@ static int TX_slot_frame_counter=0; static int radio_lock_TX_pending = 0; void SI4463_prepa_TX_1(void) { - unsigned long int timer_snapshot; - G_SI4463->RX_LED->write(0); - G_PTT_PA_pin->write(1); - timer_snapshot = GLOBAL_timer.read_us() + 50000; - //if ( (CONF_radio_state_ON_OFF) && (radio_lock_TX_pending == 0) ) { - if ( (CONF_radio_state_ON_OFF) ) { - radio_lock_TX_pending = 1; - G_SI4463->RX_TX_state = 0; //temporary inhibit actions from HW IRQ - - if ( (is_TDMA_master) && (CONF_master_FDD<2) && (CONF_radio_state_ON_OFF) && (((timer_snapshot-last_rframe_seen)&0x7FFFFFFF) < CONF_radio_timeout) ) { - //if ( (is_TDMA_master) && (CONF_radio_state_ON_OFF) ) { - SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, CONF_TDMA_frame_duration);//master_TDMA_period - //TDMA_top_measure(); - } - SI4463_prepa_TX_2_call.attach_us(&SI4463_prepa_TX_2, 350); //300 - if (is_TDMA_master) { - TDMA_master_allocation(); - } - } + unsigned long int timer_snapshot; + G_SI4463->RX_LED->write(0); + G_PTT_PA_pin->write(1); + timer_snapshot = GLOBAL_timer.read_us() + 50000; + //if ( (CONF_radio_state_ON_OFF) && (radio_lock_TX_pending == 0) ) { + if ( (CONF_radio_state_ON_OFF) ) { + radio_lock_TX_pending = 1; + G_SI4463->RX_TX_state = 0; //temporary inhibit actions from HW IRQ + + if ( (is_TDMA_master) && (CONF_master_FDD<2) && (CONF_radio_state_ON_OFF) && (((timer_snapshot-last_rframe_seen)&0x7FFFFFFF) < CONF_radio_timeout) ) { + //if ( (is_TDMA_master) && (CONF_radio_state_ON_OFF) ) { + SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, CONF_TDMA_frame_duration);//master_TDMA_period + //TDMA_top_measure(); + } + SI4463_prepa_TX_2_call.attach_us(&SI4463_prepa_TX_2, 350); //300 + if (is_TDMA_master) { + TDMA_master_allocation(); + } + } } void SI4463_prepa_TX_2(void) { - int toto; - unsigned int loc_time; - unsigned int loc_time_offset; - unsigned char trash [10]; + int toto; + unsigned int loc_time; + unsigned int loc_time_offset; + unsigned char trash [10]; - if (CONF_radio_state_ON_OFF) { - loc_time = GLOBAL_timer.read_us(); - if (is_TDMA_master) { - loc_time_offset = 530; // 530 - } else { - // //loc_time_offset = (time_next_TX_slave-loc_time) & 0xFFFFFF; - loc_time_offset = 530; // 530 - } - time_STOP_TX_burst = (loc_time + loc_time_offset + time_max_TX_burst);// & 0xFFFFFF; - SI4463_1st_TX_call.attach_us(&SI4463_decide_new_TX_or_not, loc_time_offset); - - SI4463_change_state(G_SI4463, 0x05); //switch to TX_TUNE (with CTS) - RX_FIFO_WR_point = RX_FIFO_last_received; // rewind WR_pointer to last complete packet - SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO (including CTS) - TX_slot_frame_counter = 0; - SI4463_clear_IT (G_SI4463, 0, 0);//without CTS - G_SI4463->RX_TX_state = 2; // activate TX HW IRQ - wait_us(20); - SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); - SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_long); - } - + if (CONF_radio_state_ON_OFF) { + loc_time = GLOBAL_timer.read_us(); + if (is_TDMA_master) { + loc_time_offset = 530; // 530 + } else { + // //loc_time_offset = (time_next_TX_slave-loc_time) & 0xFFFFFF; + loc_time_offset = 530; // 530 + } + time_STOP_TX_burst = (loc_time + loc_time_offset + time_max_TX_burst);// & 0xFFFFFF; + SI4463_1st_TX_call.attach_us(&SI4463_decide_new_TX_or_not, loc_time_offset); + + SI4463_change_state(G_SI4463, 0x05); //switch to TX_TUNE (with CTS) + RX_FIFO_WR_point = RX_FIFO_last_received; // rewind WR_pointer to last complete packet + SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO (including CTS) + TX_slot_frame_counter = 0; + SI4463_clear_IT (G_SI4463, 0, 0);//without CTS + G_SI4463->RX_TX_state = 2; // activate TX HW IRQ + wait_us(20); + SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); + SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_long); + } + } void SI4463_TX_to_RX_transition(void) { - int toto; - unsigned char trash[10]; - - SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO - G_SI4463->RX_TX_state = 0; // temporarly inhibit IRQ - radio_lock_TX_pending = 0; - - if (G_need_temperature_check==1) { - SI4463_periodic_temperature_check(G_SI4463);//added 2019_05_31 - G_need_temperature_check = 0; - } - SI4463_start_RX(G_SI4463, CONF_channel_RX); // with CTS - SI4463_RX_HOP();// with CTS - SI4463_clear_IT (G_SI4463, 0, 0); - SI4463_CTS_read_answer (G_SI4463, trash, 2, 5);// ADDED 2018 08 25 - RX_size_remaining = 0; - G_PTT_PA_pin->write(0); - G_SI4463->RX_TX_state = 1; // activate RX HW IRQ - if ( (is_TDMA_master == 0) && (CONF_radio_modulation == 24) ) { - SI4463_RX_timeout_call.attach_us(&SI4463_RX_timeout, 10*CONF_TDMA_frame_duration); - } - TX_in_progress = 0; + int toto; + unsigned char trash[10]; + + SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO + G_SI4463->RX_TX_state = 0; // temporarly inhibit IRQ + radio_lock_TX_pending = 0; + + if (G_need_temperature_check==1) { + SI4463_periodic_temperature_check(G_SI4463);//added 2019_05_31 + G_need_temperature_check = 0; + } + SI4463_start_RX(G_SI4463, CONF_channel_RX); // with CTS + SI4463_RX_HOP();// with CTS + SI4463_clear_IT (G_SI4463, 0, 0); + SI4463_CTS_read_answer (G_SI4463, trash, 2, 5);// ADDED 2018 08 25 + RX_size_remaining = 0; + G_PTT_PA_pin->write(0); + G_SI4463->RX_TX_state = 1; // activate RX HW IRQ + if ( (is_TDMA_master == 0) && (CONF_radio_modulation == 24) ) { + SI4463_RX_timeout_call.attach_us(&SI4463_RX_timeout, 10*CONF_TDMA_frame_duration); + } + TX_in_progress = 0; } void SI4463_RX_timeout (void) { - unsigned int timer_snapshot; - timer_snapshot = GLOBAL_timer.read_us(); - if ( (timer_snapshot - last_rframe_seen) > 9*CONF_TDMA_frame_duration) { - SI4463_prepa_TX_1(); - last_rframe_seen = timer_snapshot; - } + unsigned int timer_snapshot; + timer_snapshot = GLOBAL_timer.read_us(); + if ( (timer_snapshot - last_rframe_seen) > 9*CONF_TDMA_frame_duration) { + SI4463_prepa_TX_1(); + last_rframe_seen = timer_snapshot; + } } void Radio_purge_old_frames (void) { - int force_loop_exit = 0; - unsigned int loc_size; - unsigned char RX_frame_datation; - unsigned char loc_time_char; - unsigned int loc_time_int; - loc_time_int = GLOBAL_timer.read_us(); - loc_time_char = (loc_time_int >> 16) & 0xFF; - while (force_loop_exit == 0) { - if (TX_buff_intern_RD_pointer < TX_buff_intern_last_ready) {//data available in FIFO - RX_frame_datation = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][0]; + int force_loop_exit = 0; + unsigned int loc_size; + unsigned char RX_frame_datation; + unsigned char loc_time_char; + unsigned int loc_time_int; + loc_time_int = GLOBAL_timer.read_us(); + loc_time_char = (loc_time_int >> 16) & 0xFF; + while (force_loop_exit == 0) { + if (TX_buff_intern_RD_pointer < TX_buff_intern_last_ready) {//data available in FIFO + RX_frame_datation = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][0]; - if ( (loc_time_char - RX_frame_datation) > CONF_Tx_rframe_timeout) {//CONF_Tx_rframe_timeout - loc_size = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1]; - loc_size = loc_size + 2 + SI4463_offset_size; - //+2 because timer byte and size byte - if (loc_size <= 128) { - TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 1; - } else if (loc_size <= 256) { - TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 2; - } else { - TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 3; - } - //printf("purged!\r\n"); - //printf("date1 %i date2 %i\r\n", loc_time_char, RX_frame_datation); - } - else { //packet is recent - force_loop_exit = 1; - } - } - else { //no data available in FIFO - force_loop_exit = 1; - } - } + if ( (loc_time_char - RX_frame_datation) > CONF_Tx_rframe_timeout) {//CONF_Tx_rframe_timeout + loc_size = TX_buff_intern_FIFOdata[TX_buff_intern_RD_pointer % 128][1]; + loc_size = loc_size + 2 + SI4463_offset_size; + //+2 because timer byte and size byte + if (loc_size <= 128) { + TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 1; + } else if (loc_size <= 256) { + TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 2; + } else { + TX_buff_intern_RD_pointer = TX_buff_intern_RD_pointer + 3; + } + //printf("purged!\r\n"); + //printf("date1 %i date2 %i\r\n", loc_time_char, RX_frame_datation); + } + else { //packet is recent + force_loop_exit = 1; + } + } + else { //no data available in FIFO + force_loop_exit = 1; + } + } } int TX_test_mode = 0; void SI4463_decide_new_TX_or_not (void) { //decides if new frame must be transmitted, and which frame - unsigned int loc_size; - unsigned int loc_time; - unsigned char TDMA_sync; - int delta_end_burst; // >0 not enough time + unsigned int loc_size; + unsigned int loc_time; + unsigned char TDMA_sync; + int delta_end_burst; // >0 not enough time - int OK_send_PS; - int PS_data_available; - slave_new_burst_tx_pending = 0; - OK_send_PS = 0; - PS_data_available = 0; - Radio_purge_old_frames(); - if (TX_buff_intern_RD_pointer < TX_buff_intern_last_ready) {//data available in TXPS - PS_data_available = 1; - loc_size = TX_intern_FIFO_get_lastfrzize(); - } else { - loc_size = 120; - } - - loc_time = GLOBAL_timer.read_us(); - delta_end_burst = loc_time + (loc_size * CONF_byte_duration) + CONF_preamble_duration_for_decide - time_STOP_TX_burst - 50; - if (TX_slot_frame_counter == 0) { - delta_end_burst = delta_end_burst + CONF_additional_preamble; - } - - //printf("%i\r\n", delta_end_burst); - if (delta_end_burst < 0) { - OK_send_PS = 1; - } - - if (TX_slot_frame_counter == 0) { - TDMA_sync = 1; - } else { - TDMA_sync = 0; - } - - if (CONF_radio_state_ON_OFF==0) {//radio off check for TX test - if (TX_test_inprogress == 1) { - TX_frame_to_send = TX_TDMA_intern_data; - SI4463_TX_new_frame(TDMA_sync); - } else { - SI4463_TX_to_RX_transition(); - } - } - else { //normal operation - if (is_TDMA_master) { - if (CONF_master_FDD==2) { - SI4463_TX_to_RX_transition();//Master FDD up, go immediately to RX - } - else if (TX_slot_frame_counter == 0) { // systematically send TDMA signaling frame - TX_frame_to_send = TX_TDMA_intern_data; - TDMA_top_measure(); - //G_PTT_PA_pin->write(1); - if (CONF_master_FDD == 1) {//Master FDD downlink - G_FDD_trig_pin->write(1); - } - SI4463_TX_new_frame(TDMA_sync); - SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); - TX_slot_frame_counter++; - } - else if (PS_data_available && OK_send_PS) { - TX_intern_FIFO_read (TX_temp_rframe); - TX_frame_to_send = TX_temp_rframe; - SI4463_TX_new_frame(TDMA_sync); - TX_slot_frame_counter++; - } - else { - TX_slot_frame_counter = 0; - //G_PTT_PA_pin->write(0); - if (CONF_master_FDD == 1) {//Master FDD downlink - G_FDD_trig_pin->write(0); - } - SI4463_TX_to_RX_transition(); - } - - } else { // SLAVE - if ( (PS_data_available==0) && (TX_slot_frame_counter==0) && (my_client_radio_connexion_state==2) ) {//send a null frame - TX_frame_to_send = TX_TDMA_intern_data; - SI4463_TX_new_frame(TDMA_sync); - if (TX_slot_frame_counter == 0) { - SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); - } - TX_slot_frame_counter++; - } - else if ( (PS_data_available) && (OK_send_PS) ) { - TX_intern_FIFO_read (TX_temp_rframe); - TX_frame_to_send = TX_temp_rframe; - SI4463_TX_new_frame(TDMA_sync); - if (TX_slot_frame_counter == 0) { - SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); - } - TX_slot_frame_counter++; - } - else { - TX_slot_frame_counter = 0; - SI4463_TX_to_RX_transition(); - } - } - } + int OK_send_PS; + int PS_data_available; + slave_new_burst_tx_pending = 0; + OK_send_PS = 0; + PS_data_available = 0; + Radio_purge_old_frames(); + if (TX_buff_intern_RD_pointer < TX_buff_intern_last_ready) {//data available in TXPS + PS_data_available = 1; + loc_size = TX_intern_FIFO_get_lastfrzize(); + } else { + loc_size = 120; + } + + loc_time = GLOBAL_timer.read_us(); + delta_end_burst = loc_time + (loc_size * CONF_byte_duration) + CONF_preamble_duration_for_decide - time_STOP_TX_burst - 50; + if (TX_slot_frame_counter == 0) { + delta_end_burst = delta_end_burst + CONF_additional_preamble; + } + + //printf("%i\r\n", delta_end_burst); + if (delta_end_burst < 0) { + OK_send_PS = 1; + } + + if (TX_slot_frame_counter == 0) { + TDMA_sync = 1; + } else { + TDMA_sync = 0; + } + + if (CONF_radio_state_ON_OFF==0) {//radio off check for TX test + if (TX_test_inprogress == 1) { + TX_frame_to_send = TX_TDMA_intern_data; + SI4463_TX_new_frame(TDMA_sync); + } else { + SI4463_TX_to_RX_transition(); + } + } + else { //normal operation + if (is_TDMA_master) { + if (CONF_master_FDD==2) { + SI4463_TX_to_RX_transition();//Master FDD up, go immediately to RX + } + else if (TX_slot_frame_counter == 0) { // systematically send TDMA signaling frame + TX_frame_to_send = TX_TDMA_intern_data; + TDMA_top_measure(); + //G_PTT_PA_pin->write(1); + if (CONF_master_FDD == 1) {//Master FDD downlink + G_FDD_trig_pin->write(1); + } + SI4463_TX_new_frame(TDMA_sync); + SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); + TX_slot_frame_counter++; + } + else if (PS_data_available && OK_send_PS) { + TX_intern_FIFO_read (TX_temp_rframe); + TX_frame_to_send = TX_temp_rframe; + SI4463_TX_new_frame(TDMA_sync); + TX_slot_frame_counter++; + } + else { + TX_slot_frame_counter = 0; + //G_PTT_PA_pin->write(0); + if (CONF_master_FDD == 1) {//Master FDD downlink + G_FDD_trig_pin->write(0); + } + SI4463_TX_to_RX_transition(); + } + + } else { // SLAVE + if ( (PS_data_available==0) && (TX_slot_frame_counter==0) && (my_client_radio_connexion_state==2) ) {//send a null frame + TX_frame_to_send = TX_TDMA_intern_data; + SI4463_TX_new_frame(TDMA_sync); + if (TX_slot_frame_counter == 0) { + SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); + } + TX_slot_frame_counter++; + } + else if ( (PS_data_available) && (OK_send_PS) ) { + TX_intern_FIFO_read (TX_temp_rframe); + TX_frame_to_send = TX_temp_rframe; + SI4463_TX_new_frame(TDMA_sync); + if (TX_slot_frame_counter == 0) { + SI4463_set_TX_preamble_length(G_SI4463, CONF_preamble_TX_short); + } + TX_slot_frame_counter++; + } + else { + TX_slot_frame_counter = 0; + SI4463_TX_to_RX_transition(); + } + } + } } static unsigned int TX_size_remaining = 0; void SI4463_TX_new_frame(unsigned char synchro) { - //unsigned char timer_coarse; - unsigned int full_packet_size; - unsigned int size_to_send; - unsigned char trash[10]; + //unsigned char timer_coarse; + unsigned int full_packet_size; + unsigned int size_to_send; + unsigned char trash[10]; - TX_in_progress = 1; - //prefill TX FIFO with small amount of data - TX_frame_to_send++; //1st byte ignored timer coarse - TX_size_remaining = TX_frame_to_send[0] + 1 + SI4463_offset_size; - full_packet_size = TX_size_remaining; - - TX_frame_to_send[1] = TDMA_byte_elaboration(synchro); - SI4463_FIFO_TX_transfer(30); - TX_size_remaining = TX_size_remaining - 30; - - //start TX order - SI4463_start_TX (G_SI4463, CONF_channel_TX, full_packet_size); + TX_in_progress = 1; + //prefill TX FIFO with small amount of data + TX_frame_to_send++; //1st byte ignored timer coarse + TX_size_remaining = TX_frame_to_send[0] + 1 + SI4463_offset_size; + full_packet_size = TX_size_remaining; + + TX_frame_to_send[1] = TDMA_byte_elaboration(synchro); + SI4463_FIFO_TX_transfer(30); + TX_size_remaining = TX_size_remaining - 30; + + //start TX order + SI4463_start_TX (G_SI4463, CONF_channel_TX, full_packet_size); - //FIFO transfer - if (TX_size_remaining < 95) { //sent in 1 pass //95 - size_to_send = TX_size_remaining; - } else { - size_to_send = 95; //95 - } - SI4463_FIFO_TX_transfer(size_to_send); - - //CTS - SI4463_CTS_read_answer (G_SI4463, trash, 0, 55);//TEST previously 5 - TX_size_remaining = TX_size_remaining - size_to_send; + //FIFO transfer + if (TX_size_remaining < 95) { //sent in 1 pass //95 + size_to_send = TX_size_remaining; + } else { + size_to_send = 95; //95 + } + SI4463_FIFO_TX_transfer(size_to_send); + + //CTS + SI4463_CTS_read_answer (G_SI4463, trash, 0, 55);//TEST previously 5 + TX_size_remaining = TX_size_remaining - size_to_send; } void SI4463_HW_TX_IT() { - static unsigned char FRR[5]; - int size_to_write; - - int IT_FIFO_almost_empty; - int IT_pckt_sent; - int Treated_FIFO_almost_empty; - int Treated_pckt_sent; - int Synth_FIFO_almost_empty; - int Synth_pckt_sent; - int IT_state; - int t_rehabilit_interrupt; - unsigned char clear_IT_PH; - - Treated_FIFO_almost_empty = 0; - Treated_pckt_sent = 0; - - do { - SI4463_read_FRR (G_SI4463, FRR); - IT_FIFO_almost_empty = (FRR[0] & 0x02 ) /0x02; - IT_pckt_sent = (FRR[0] & 0x20 ) /0x20; - - Synth_FIFO_almost_empty = IT_FIFO_almost_empty ^ Treated_FIFO_almost_empty; - Synth_pckt_sent = IT_pckt_sent ^ Treated_pckt_sent; - - if (Synth_pckt_sent) { - TX_in_progress = 0; - SI4463_decide_new_TX_or_not(); - Treated_pckt_sent = 1; - Treated_FIFO_almost_empty = IT_FIFO_almost_empty; // trick - } - Synth_FIFO_almost_empty = IT_FIFO_almost_empty ^ Treated_FIFO_almost_empty; - if (Synth_FIFO_almost_empty) { - // FIFO almost empty - if (TX_size_remaining > 0) {//more data to send on this packet - if (TX_size_remaining > SI4463_CONF_TX_FIFO_threshold) {//not enough space in FIFO for full packet - size_to_write = SI4463_CONF_TX_FIFO_threshold; - } else { - size_to_write = TX_size_remaining; - } - SI4463_FIFO_TX_transfer (size_to_write); - TX_size_remaining = TX_size_remaining - size_to_write; - } - Treated_FIFO_almost_empty = 1; //even if nothing more to send - } - - clear_IT_PH = ~(Treated_FIFO_almost_empty * 0x02 + Treated_pckt_sent * 0x20); - SI4463_clear_IT(G_SI4463, clear_IT_PH, 0x00); - //wait_us(25); - t_rehabilit_interrupt = 0; - IT_state = G_SI4463->interrupt->read(); - while ( (t_rehabilit_interrupt<25) && (IT_state == 0) ) { - wait_us(1); - IT_state = G_SI4463->interrupt->read(); - t_rehabilit_interrupt++; - } - } while (IT_state == 0); + static unsigned char FRR[5]; + int size_to_write; + + int IT_FIFO_almost_empty; + int IT_pckt_sent; + int Treated_FIFO_almost_empty; + int Treated_pckt_sent; + int Synth_FIFO_almost_empty; + int Synth_pckt_sent; + int IT_state; + int t_rehabilit_interrupt; + unsigned char clear_IT_PH; + + Treated_FIFO_almost_empty = 0; + Treated_pckt_sent = 0; + + do { + SI4463_read_FRR (G_SI4463, FRR); + IT_FIFO_almost_empty = (FRR[0] & 0x02 ) /0x02; + IT_pckt_sent = (FRR[0] & 0x20 ) /0x20; + + Synth_FIFO_almost_empty = IT_FIFO_almost_empty ^ Treated_FIFO_almost_empty; + Synth_pckt_sent = IT_pckt_sent ^ Treated_pckt_sent; + + if (Synth_pckt_sent) { + TX_in_progress = 0; + SI4463_decide_new_TX_or_not(); + Treated_pckt_sent = 1; + Treated_FIFO_almost_empty = IT_FIFO_almost_empty; // trick + } + Synth_FIFO_almost_empty = IT_FIFO_almost_empty ^ Treated_FIFO_almost_empty; + if (Synth_FIFO_almost_empty) { + // FIFO almost empty + if (TX_size_remaining > 0) {//more data to send on this packet + if (TX_size_remaining > SI4463_CONF_TX_FIFO_threshold) {//not enough space in FIFO for full packet + size_to_write = SI4463_CONF_TX_FIFO_threshold; + } else { + size_to_write = TX_size_remaining; + } + SI4463_FIFO_TX_transfer (size_to_write); + TX_size_remaining = TX_size_remaining - size_to_write; + } + Treated_FIFO_almost_empty = 1; //even if nothing more to send + } + + clear_IT_PH = ~(Treated_FIFO_almost_empty * 0x02 + Treated_pckt_sent * 0x20); + SI4463_clear_IT(G_SI4463, clear_IT_PH, 0x00); + //wait_us(25); + t_rehabilit_interrupt = 0; + IT_state = G_SI4463->interrupt->read(); + while ( (t_rehabilit_interrupt<25) && (IT_state == 0) ) { + wait_us(1); + IT_state = G_SI4463->interrupt->read(); + t_rehabilit_interrupt++; + } + } while (IT_state == 0); } void SI4463_HW_interrupt() { - if ( (G_SI4463->RX_TX_state == 1) && (CONF_radio_state_ON_OFF) ) { //Receive - SI4463_RX_IT(); - } - if (G_SI4463->RX_TX_state == 2) { //transmit - SI4463_HW_TX_IT(); - } + if ( (G_SI4463->RX_TX_state == 1) && (CONF_radio_state_ON_OFF) ) { //Receive + SI4463_RX_IT(); + } + if (G_SI4463->RX_TX_state == 2) { //transmit + SI4463_HW_TX_IT(); + } } int SI4463_configure_all(void) { - int answer_loc = 0; - int i = 0; - G_SI4463->SDN->write(0); - wait_ms(10);//100 - G_SI4463->SDN->write(1); - wait_ms(500);//100 20 - G_SI4463->SDN->write(0); - wait_ms(200);//500 20 - while ( (answer_loc == 0) && (i < 5) ) { - i++; - //if (CONF_radio_modulation == 10) { - // answer_loc = SI4463_configure_from_10(G_SI4463); - //} - if (CONF_radio_modulation == 20) { - answer_loc = SI4463_configure_from_20(G_SI4463); - } - if (CONF_radio_modulation == 11) { - answer_loc = SI4463_configure_from_11(G_SI4463); - } - if (CONF_radio_modulation == 21) { - answer_loc = SI4463_configure_from_21(G_SI4463); - } - if (CONF_radio_modulation == 12) { - answer_loc = SI4463_configure_from_12(G_SI4463); - } - - if (CONF_radio_modulation == 22) { - answer_loc = SI4463_configure_from_22(G_SI4463); - } - if (CONF_radio_modulation == 13) { - answer_loc = SI4463_configure_from_13(G_SI4463); - } - if (CONF_radio_modulation == 23) { - answer_loc = SI4463_configure_from_23(G_SI4463); - } - if (CONF_radio_modulation == 14) { - answer_loc = SI4463_configure_from_14(G_SI4463); - } - if (CONF_radio_modulation == 24) { - answer_loc = SI4463_configure_from_24(G_SI4463); - } - RADIO_compute_freq_params(); - } - return answer_loc; + int answer_loc = 0; + int i = 0; + G_SI4463->SDN->write(0); + wait_ms(10);//100 + G_SI4463->SDN->write(1); + wait_ms(500);//100 20 + G_SI4463->SDN->write(0); + wait_ms(200);//500 20 + while ( (answer_loc == 0) && (i < 5) ) { + i++; + //if (CONF_radio_modulation == 10) { + // answer_loc = SI4463_configure_from_10(G_SI4463); + //} + if (CONF_radio_modulation == 20) { + answer_loc = SI4463_configure_from_20(G_SI4463); + } + if (CONF_radio_modulation == 11) { + answer_loc = SI4463_configure_from_11(G_SI4463); + } + if (CONF_radio_modulation == 21) { + answer_loc = SI4463_configure_from_21(G_SI4463); + } + if (CONF_radio_modulation == 12) { + answer_loc = SI4463_configure_from_12(G_SI4463); + } + + if (CONF_radio_modulation == 22) { + answer_loc = SI4463_configure_from_22(G_SI4463); + } + if (CONF_radio_modulation == 13) { + answer_loc = SI4463_configure_from_13(G_SI4463); + } + if (CONF_radio_modulation == 23) { + answer_loc = SI4463_configure_from_23(G_SI4463); + } + if (CONF_radio_modulation == 14) { + answer_loc = SI4463_configure_from_14(G_SI4463); + } + if (CONF_radio_modulation == 24) { + answer_loc = SI4463_configure_from_24(G_SI4463); + } + RADIO_compute_freq_params(); + } + return answer_loc; } void SI4463_radio_start(void) { - if (CONF_radio_state_ON_OFF == 0) { - //SI4463_change_state(G_SI4463, 0x03);//change state to ready - wait_ms(1); - G_SI4463->RX_TX_state = 0; - SI4463_clear_IT(G_SI4463, 0, 0); - //wait_ms(10); - SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 600); - CONF_radio_state_ON_OFF = 1; - if ( (is_TDMA_master) && (CONF_master_FDD < 2) ) { - SI4463_prepa_TX_1(); - } else { - SI4463_TX_to_RX_transition(); - } - //TDMA_init_all(); - } + if (CONF_radio_state_ON_OFF == 0) { + //SI4463_change_state(G_SI4463, 0x03);//change state to ready + wait_ms(1); + G_SI4463->RX_TX_state = 0; + SI4463_clear_IT(G_SI4463, 0, 0); + //wait_ms(10); + SI4463_CTS_read_answer (G_SI4463, SI_trash, 0, 600); + CONF_radio_state_ON_OFF = 1; + if ( (is_TDMA_master) && (CONF_master_FDD < 2) ) { + SI4463_prepa_TX_1(); + } else { + SI4463_TX_to_RX_transition(); + } + //TDMA_init_all(); + } } void RADIO_on(int need_disconnect, int need_radio_reconfigure, int HMI_output) { - last_rframe_seen = GLOBAL_timer.read_us(); - wait_ms(50);//10 - if (need_radio_reconfigure == 1) { - if (HMI_output) { HMI_printf("reconfiguring radio...\r\n"); } - SI4463_configure_all(); - if (HMI_output) { HMI_printf("reconfiguring done; starting radio\r\n"); } - } - if (need_disconnect == 1) { - if (is_TDMA_master == 1) { - my_client_radio_connexion_state = 2; - } else { - my_client_radio_connexion_state = 1; - my_radio_client_ID = 0x7E; - } - } - TDMA_NULL_frame_init(70); - if (need_disconnect == 1) { - TDMA_init_all(); - } - radio_flush_TX_FIFO();// A supprimer! - SI4463_radio_start(); - //need_radio_reconfigure = 0; + last_rframe_seen = GLOBAL_timer.read_us(); + wait_ms(50);//10 + if (need_radio_reconfigure == 1) { + if (HMI_output) { HMI_printf("reconfiguring radio...\r\n"); } + SI4463_configure_all(); + if (HMI_output) { HMI_printf("reconfiguring done; starting radio\r\n"); } + } + if (need_disconnect == 1) { + if (is_TDMA_master == 1) { + my_client_radio_connexion_state = 2; + } else { + my_client_radio_connexion_state = 1; + my_radio_client_ID = 0x7E; + } + } + TDMA_NULL_frame_init(70); + if (need_disconnect == 1) { + TDMA_init_all(); + } + radio_flush_TX_FIFO();// A supprimer! + SI4463_radio_start(); + //need_radio_reconfigure = 0; } void RADIO_off(int need_disconnect) { - int toto; - CONF_radio_state_ON_OFF = 0; - if ( (is_TDMA_master == 0 ) && (need_disconnect == 1) ) { - my_client_radio_connexion_state = 1; - my_radio_client_ID = 0x7E; - } - wait_ms(100);//400 - SI4463_FIFO_status(G_SI4463, &toto, &toto, 1);//tentative - G_SI4463->RX_TX_state = 0;//tentative - G_SI4463->RX_LED->write(0); - wait_us(10); - SI4463_change_state(G_SI4463, 0x03);//change state to ready - wait_us(10); - SI4463_FIFO_status(G_SI4463, &toto, &toto, 1);//tentative - wait_us(10); - SI4463_clear_IT (G_SI4463, 0, 0);//tentative - wait_ms(10); - RX_FIFO_WR_point = RX_FIFO_last_received; //rewind FIFO pointer - G_PTT_PA_pin->write(0); - TX_in_progress = 0; + int toto; + CONF_radio_state_ON_OFF = 0; + if ( (is_TDMA_master == 0 ) && (need_disconnect == 1) ) { + my_client_radio_connexion_state = 1; + my_radio_client_ID = 0x7E; + } + wait_ms(100);//400 + SI4463_FIFO_status(G_SI4463, &toto, &toto, 1);//tentative + G_SI4463->RX_TX_state = 0;//tentative + G_SI4463->RX_LED->write(0); + wait_us(10); + SI4463_change_state(G_SI4463, 0x03);//change state to ready + wait_us(10); + SI4463_FIFO_status(G_SI4463, &toto, &toto, 1);//tentative + wait_us(10); + SI4463_clear_IT (G_SI4463, 0, 0);//tentative + wait_ms(10); + RX_FIFO_WR_point = RX_FIFO_last_received; //rewind FIFO pointer + G_PTT_PA_pin->write(0); + TX_in_progress = 0; } static int RADIO_previous_state; void RADIO_off_if_necessary(int need_disconnect) { - if (CONF_radio_state_ON_OFF == 1) { - RADIO_previous_state = 1; - RADIO_off(need_disconnect); - } else { - RADIO_previous_state = 0; - } + if (CONF_radio_state_ON_OFF == 1) { + RADIO_previous_state = 1; + RADIO_off(need_disconnect); + } else { + RADIO_previous_state = 0; + } } void RADIO_restart_if_necessary(int need_disconnect, int need_radio_reconfigure, int HMI_output) { - if (RADIO_previous_state == 1) { - RADIO_on(need_disconnect, need_radio_reconfigure, HMI_output); - } + if (RADIO_previous_state == 1) { + RADIO_on(need_disconnect, need_radio_reconfigure, HMI_output); + } } void SI4432_TX_test(unsigned int req_duration) { //duration in ms - int toto; - unsigned int timer_begin; - unsigned int timer_snapshot; - unsigned int real_duration; - // unsigned char SI4463_state; - // unsigned char loc_answer[8]; - unsigned char trash[4]; - - TX_test_inprogress = 1; - - TX_frame_to_send = TX_TDMA_intern_data; - req_duration = req_duration * 1000; //converts ms to microsec - - SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO (including CTS) - SI4463_clear_IT (G_SI4463, 0, 0);//without CTS - G_SI4463->RX_TX_state = 2; // activate TX HW IRQ - wait_us(20); - SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); - - G_SI4463->RX_TX_state = 2; - TDMA_NULL_frame_init(230); - SI4463_TX_new_frame(0); - timer_begin = GLOBAL_timer.read_us(); - do { - wait_ms(2); - timer_snapshot = GLOBAL_timer.read_us(); - real_duration = (timer_snapshot - timer_begin); - } while (real_duration < (req_duration) ) ; - TX_test_inprogress = 0; - wait_ms(200); - RADIO_off(1); + int toto; + unsigned int timer_begin; + unsigned int timer_snapshot; + unsigned int real_duration; + // unsigned char SI4463_state; + // unsigned char loc_answer[8]; + unsigned char trash[4]; + + TX_test_inprogress = 1; + + TX_frame_to_send = TX_TDMA_intern_data; + req_duration = req_duration * 1000; //converts ms to microsec + + SI4463_FIFO_status(G_SI4463, &toto, &toto, 1); //reset FIFO (including CTS) + SI4463_clear_IT (G_SI4463, 0, 0);//without CTS + G_SI4463->RX_TX_state = 2; // activate TX HW IRQ + wait_us(20); + SI4463_CTS_read_answer(G_SI4463, trash, 0, 20); + + G_SI4463->RX_TX_state = 2; + TDMA_NULL_frame_init(230); + SI4463_TX_new_frame(0); + timer_begin = GLOBAL_timer.read_us(); + do { + wait_ms(2); + timer_snapshot = GLOBAL_timer.read_us(); + real_duration = (timer_snapshot - timer_begin); + } while (real_duration < (req_duration) ) ; + TX_test_inprogress = 0; + wait_ms(200); + RADIO_off(1); } void SI4463_set_frequency(float freq_base, float freq_step) { - unsigned char radio_config[15] = {0x11, 0x40, 0x06, 0x00}; - unsigned int step_size_temp, FC_int, FC_frac_int; - // unsigned int i; - float FC_int_float, FC_frac_float; - - //FC_int_float = freq_base / 7.5; - FC_int_float = freq_base * SI4463_NOUTDIV / 60; - FC_int = (unsigned int)FC_int_float - 1; - FC_frac_float = (FC_int_float - (float)FC_int) * 524288; - FC_frac_int = (unsigned int)(FC_frac_float); - - //printf ("\r\nfreq_base %f \r\nfreq step %f\r\n", freq_base, freq_step); - //printf ("\r\nFC_int_float %f\r\nFC_int %i\r\nFC_frac_float %f\r\nFC_frac_int%i\r\n", FC_int_float, FC_int, FC_frac_float, FC_frac_int); - step_size_temp = (unsigned int)(524288*freq_step/7.5); - - radio_config [4] = FC_int & 0xFF; //FREQ_CONTROL_INTE - radio_config [5] = (FC_frac_int & 0xFF0000) >> 16; //FREQ_CONTROL_FRAC MSB - radio_config [6] = (FC_frac_int & 0x00FF00) >> 8; // ... - radio_config [7] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB - radio_config [8] = (step_size_temp & 0xFF00) >> 8; //FREQ_CONTROL_STEP_SIZE MSB - radio_config [9] = step_size_temp & 0x00FF; //FREQ_CONTROL_STEP_SIZE LSB - //for (i=0; i<10; i++) { - // printf("i%i : %02X\r\n", i, radio_config[i]); - //} - SI4463_send_command(G_SI4463, radio_config, 10); - wait_ms(100);// 100us - SI4463_CTS_read_answer(G_SI4463, SI_trash, 0, 200); - wait_ms(100);// 100us + unsigned char radio_config[15] = {0x11, 0x40, 0x06, 0x00}; + unsigned int step_size_temp, FC_int, FC_frac_int; + // unsigned int i; + float FC_int_float, FC_frac_float; + + //FC_int_float = freq_base / 7.5; + FC_int_float = freq_base * SI4463_NOUTDIV / 60; + FC_int = (unsigned int)FC_int_float - 1; + FC_frac_float = (FC_int_float - (float)FC_int) * 524288; + FC_frac_int = (unsigned int)(FC_frac_float); + + //printf ("\r\nfreq_base %f \r\nfreq step %f\r\n", freq_base, freq_step); + //printf ("\r\nFC_int_float %f\r\nFC_int %i\r\nFC_frac_float %f\r\nFC_frac_int%i\r\n", FC_int_float, FC_int, FC_frac_float, FC_frac_int); + step_size_temp = (unsigned int)(524288*freq_step/7.5); + + radio_config [4] = FC_int & 0xFF; //FREQ_CONTROL_INTE + radio_config [5] = (FC_frac_int & 0xFF0000) >> 16; //FREQ_CONTROL_FRAC MSB + radio_config [6] = (FC_frac_int & 0x00FF00) >> 8; // ... + radio_config [7] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB + radio_config [8] = (step_size_temp & 0xFF00) >> 8; //FREQ_CONTROL_STEP_SIZE MSB + radio_config [9] = step_size_temp & 0x00FF; //FREQ_CONTROL_STEP_SIZE LSB + //for (i=0; i<10; i++) { + // printf("i%i : %02X\r\n", i, radio_config[i]); + //} + SI4463_send_command(G_SI4463, radio_config, 10); + wait_ms(100);// 100us + SI4463_CTS_read_answer(G_SI4463, SI_trash, 0, 200); + wait_ms(100);// 100us } void RADIO_compute_freq_params() { - float freq_local, freq_shift_loc; - float loc_freq_float_RX; - float loc_freq_float_TX; - freq_local = FREQ_RANGE_MIN + ((float)CONF_frequency_HD)/1000;//unit MHz - freq_shift_loc = ((float)CONF_freq_shift)/1000;//unit MHz - if (is_TDMA_master == 1) { - loc_freq_float_RX = freq_local + freq_shift_loc; - loc_freq_float_TX = freq_local;//downlink - if(CONF_master_FDD == 1) {//artificially disables RX for Master down - loc_freq_float_RX = freq_local; - } - } else { - loc_freq_float_RX = freq_local;//downlink - loc_freq_float_TX = freq_local + freq_shift_loc;//uplink - } - unsigned int FC_int, FC_frac_int, VCO_CNT_int; - float FC_int_float, FC_frac_float, VCO_CNT_float; - - //TX frequency - //FC_int_float = loc_freq_float_TX / 7.5; - FC_int_float = loc_freq_float_TX * SI4463_NOUTDIV / 60; - FC_int = (unsigned int)FC_int_float - 1; - FC_frac_float = (FC_int_float - (float)FC_int) * 524288; - FC_frac_int = (unsigned int)(FC_frac_float); - //VCO_CNT_float = loc_freq_float_TX * 256/60 + 0.5; - VCO_CNT_float = (loc_freq_float_TX*32/60) * SI4463_NOUTDIV; - VCO_CNT_int = (unsigned int)(VCO_CNT_float); - CONF_SI4463_freq_conf_TX[0] = 0x37; - CONF_SI4463_freq_conf_TX[1] = FC_int & 0xFF; //FREQ_CONTROL_INTE - CONF_SI4463_freq_conf_TX[2] = (FC_frac_int & 0xFF0000) >> 16;//FREQ_CONTROL_FRAC MSB - CONF_SI4463_freq_conf_TX[3] = (FC_frac_int & 0x00FF00) >> 8; // ... - CONF_SI4463_freq_conf_TX[4] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB - CONF_SI4463_freq_conf_TX[5] = (VCO_CNT_int & 0xFF00) >> 8;// VCO CNT MSB - CONF_SI4463_freq_conf_TX[6] = (VCO_CNT_int & 0x00FF); // VCO CNT LSB - CONF_SI4463_freq_conf_TX[7] = 0x00;// PLL settle time MSB - CONF_SI4463_freq_conf_TX[8] = 0x64;// PLL settle time LSB (us) - - //RX frequency - //FC_int_float = loc_freq_float_RX / 7.5; - FC_int_float = loc_freq_float_RX * SI4463_NOUTDIV / 60; - FC_int = (unsigned int)FC_int_float - 1; - FC_frac_float = (FC_int_float - (float)FC_int) * 524288; - FC_frac_int = (unsigned int)(FC_frac_float); - //VCO_CNT_float = loc_freq_float_RX * 256/60 -2 + 0.5; - VCO_CNT_float = (loc_freq_float_RX*32/60 - 32/128) * SI4463_NOUTDIV; - VCO_CNT_int = (unsigned int)(VCO_CNT_float); - CONF_SI4463_freq_conf_RX[0] = 0x36; - CONF_SI4463_freq_conf_RX[1] = FC_int & 0xFF; //FREQ_CONTROL_INTE - CONF_SI4463_freq_conf_RX[2] = (FC_frac_int & 0xFF0000) >> 16;//FREQ_CONTROL_FRAC MSB - CONF_SI4463_freq_conf_RX[3] = (FC_frac_int & 0x00FF00) >> 8; // ... - CONF_SI4463_freq_conf_RX[4] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB - CONF_SI4463_freq_conf_RX[5] = (VCO_CNT_int & 0xFF00) >> 8;// VCO CNT MSB - CONF_SI4463_freq_conf_RX[6] = (VCO_CNT_int & 0x00FF); // VCO CNT LSB - - CONF_channel_TX = 0; - CONF_channel_RX = 0; - - SI4463_set_frequency(loc_freq_float_TX, 10); + float freq_local, freq_shift_loc; + float loc_freq_float_RX; + float loc_freq_float_TX; + freq_local = FREQ_RANGE_MIN + ((float)CONF_frequency_HD)/1000;//unit MHz + freq_shift_loc = ((float)CONF_freq_shift)/1000;//unit MHz + if (is_TDMA_master == 1) { + loc_freq_float_RX = freq_local + freq_shift_loc; + loc_freq_float_TX = freq_local;//downlink + if(CONF_master_FDD == 1) {//artificially disables RX for Master down + loc_freq_float_RX = freq_local; + } + } else { + loc_freq_float_RX = freq_local;//downlink + loc_freq_float_TX = freq_local + freq_shift_loc;//uplink + } + unsigned int FC_int, FC_frac_int, VCO_CNT_int; + float FC_int_float, FC_frac_float, VCO_CNT_float; + + //TX frequency + //FC_int_float = loc_freq_float_TX / 7.5; + FC_int_float = loc_freq_float_TX * SI4463_NOUTDIV / 60; + FC_int = (unsigned int)FC_int_float - 1; + FC_frac_float = (FC_int_float - (float)FC_int) * 524288; + FC_frac_int = (unsigned int)(FC_frac_float); + //VCO_CNT_float = loc_freq_float_TX * 256/60 + 0.5; + VCO_CNT_float = (loc_freq_float_TX*32/60) * SI4463_NOUTDIV; + VCO_CNT_int = (unsigned int)(VCO_CNT_float); + CONF_SI4463_freq_conf_TX[0] = 0x37; + CONF_SI4463_freq_conf_TX[1] = FC_int & 0xFF; //FREQ_CONTROL_INTE + CONF_SI4463_freq_conf_TX[2] = (FC_frac_int & 0xFF0000) >> 16;//FREQ_CONTROL_FRAC MSB + CONF_SI4463_freq_conf_TX[3] = (FC_frac_int & 0x00FF00) >> 8; // ... + CONF_SI4463_freq_conf_TX[4] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB + CONF_SI4463_freq_conf_TX[5] = (VCO_CNT_int & 0xFF00) >> 8;// VCO CNT MSB + CONF_SI4463_freq_conf_TX[6] = (VCO_CNT_int & 0x00FF); // VCO CNT LSB + CONF_SI4463_freq_conf_TX[7] = 0x00;// PLL settle time MSB + CONF_SI4463_freq_conf_TX[8] = 0x64;// PLL settle time LSB (us) + + //RX frequency + //FC_int_float = loc_freq_float_RX / 7.5; + FC_int_float = loc_freq_float_RX * SI4463_NOUTDIV / 60; + FC_int = (unsigned int)FC_int_float - 1; + FC_frac_float = (FC_int_float - (float)FC_int) * 524288; + FC_frac_int = (unsigned int)(FC_frac_float); + //VCO_CNT_float = loc_freq_float_RX * 256/60 -2 + 0.5; + VCO_CNT_float = (loc_freq_float_RX*32/60 - 32/128) * SI4463_NOUTDIV; + VCO_CNT_int = (unsigned int)(VCO_CNT_float); + CONF_SI4463_freq_conf_RX[0] = 0x36; + CONF_SI4463_freq_conf_RX[1] = FC_int & 0xFF; //FREQ_CONTROL_INTE + CONF_SI4463_freq_conf_RX[2] = (FC_frac_int & 0xFF0000) >> 16;//FREQ_CONTROL_FRAC MSB + CONF_SI4463_freq_conf_RX[3] = (FC_frac_int & 0x00FF00) >> 8; // ... + CONF_SI4463_freq_conf_RX[4] = (FC_frac_int & 0x0000FF); //FREQ_CONTROL_FRAC LSB + CONF_SI4463_freq_conf_RX[5] = (VCO_CNT_int & 0xFF00) >> 8;// VCO CNT MSB + CONF_SI4463_freq_conf_RX[6] = (VCO_CNT_int & 0x00FF); // VCO CNT LSB + + CONF_channel_TX = 0; + CONF_channel_RX = 0; + + SI4463_set_frequency(loc_freq_float_TX, 10); } \ No newline at end of file diff --git a/NPR_14/source/SI4463.h b/NPR_14/source/SI4463.h index 3d6323d..6db9c75 100644 --- a/NPR_14/source/SI4463.h +++ b/NPR_14/source/SI4463.h @@ -35,10 +35,10 @@ struct SI4463_Chip{ SPI_F4HDK* spi; DigitalOut* cs; - InterruptIn* interrupt; - int RX_TX_state; //0:nothing 1:RX 2:TX - DigitalOut* RX_LED; - DigitalOut* SDN; + InterruptIn* interrupt; + int RX_TX_state; //0:nothing 1:RX 2:TX + DigitalOut* RX_LED; + DigitalOut* SDN; }; int SI4463_CTS_read_answer(SI4463_Chip* SI4463, unsigned char* data, int size, int timeout); diff --git a/NPR_14/source/SI4463/SI4463_config_11.h b/NPR_14/source/SI4463/SI4463_config_11.h index 96964ab..98f0299 100644 --- a/NPR_14/source/SI4463/SI4463_config_11.h +++ b/NPR_14/source/SI4463/SI4463_config_11.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_11 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x0D, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xA7, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x23, 0x86, 0xD4, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x0D, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xA7, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x23, 0x86, 0xD4, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_11_2m.h b/NPR_14/source/SI4463/SI4463_config_11_2m.h index 59f8dc8..6d53a0c 100644 --- a/NPR_14/source/SI4463/SI4463_config_11_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_11_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_11 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xA6, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xA6, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_12.h b/NPR_14/source/SI4463/SI4463_config_12.h index e9ad513..b60736e 100644 --- a/NPR_14/source/SI4463/SI4463_config_12.h +++ b/NPR_14/source/SI4463/SI4463_config_12.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_12 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x18, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x93, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8C, 0x4A, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x18, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x93, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8C, 0x4A, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_12_2m.h b/NPR_14/source/SI4463/SI4463_config_12_2m.h index c0661c4..d4f6416 100644 --- a/NPR_14/source/SI4463/SI4463_config_12_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_12_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_12 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x49, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xBA, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCD, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x49, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xBA, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCD, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_13.h b/NPR_14/source/SI4463/SI4463_config_13.h index 215d97c..e626c26 100644 --- a/NPR_14/source/SI4463/SI4463_config_13.h +++ b/NPR_14/source/SI4463/SI4463_config_13.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_13 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x9A, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x9A, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_13_2m.h b/NPR_14/source/SI4463/SI4463_config_13_2m.h index ea625ea..953a635 100644 --- a/NPR_14/source/SI4463/SI4463_config_13_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_13_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_13 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x7A, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xE1, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x02, 0xEB, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xEF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x7A, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xE1, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x02, 0xEB, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_14.h b/NPR_14/source/SI4463/SI4463_config_14.h index c18508b..24a9a3e 100644 --- a/NPR_14/source/SI4463/SI4463_config_14.h +++ b/NPR_14/source/SI4463/SI4463_config_14.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_14 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x44, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x44, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x76, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x44, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x44, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x76, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_14_2m.h b/NPR_14/source/SI4463/SI4463_config_14_2m.h index 0f256bd..6577dcc 100644 --- a/NPR_14/source/SI4463/SI4463_config_14_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_14_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_14 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0xCC, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xCD, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x04, 0x61, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x02, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x02, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x06, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0xCC, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xCD, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x04, 0x61, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x80, 0x1A, 0x40, 0x00, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_20.h b/NPR_14/source/SI4463/SI4463_config_20.h index d66b57d..96816e6 100644 --- a/NPR_14/source/SI4463/SI4463_config_20.h +++ b/NPR_14/source/SI4463/SI4463_config_20.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_20 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x06, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD4, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x20, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x12, 0x81, 0xB5, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCB, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x06, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD4, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x20, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x12, 0x81, 0xB5, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCB, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_20_2m.h b/NPR_14/source/SI4463/SI4463_config_20_2m.h index df89d84..7c7ad93 100644 --- a/NPR_14/source/SI4463/SI4463_config_20_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_20_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_20 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x14, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x7B, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x20, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x12, 0x85, 0x1F, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCB, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x14, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x7B, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x20, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x12, 0x85, 0x1F, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCB, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_21.h b/NPR_14/source/SI4463/SI4463_config_21.h index 42b2c87..136ad09 100644 --- a/NPR_14/source/SI4463/SI4463_config_21.h +++ b/NPR_14/source/SI4463/SI4463_config_21.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_21 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x0D, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xA7, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x23, 0x86, 0xD4, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x0D, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xA7, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x23, 0x86, 0xD4, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_21_2m.h b/NPR_14/source/SI4463/SI4463_config_21_2m.h index 9d58112..67e06d6 100644 --- a/NPR_14/source/SI4463/SI4463_config_21_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_21_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_21 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xA6, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x1E, 0x84, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x10, 0x20, 0x00, 0xE8, 0x00, 0x4B, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0xD3, 0xA0, 0x06, 0xD4, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xA6, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x10, 0x10, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x15, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x08, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, 0xFF, 0xC4, 0x30, 0x7F, 0xF5, 0xB5, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB8, 0xDE, 0x05, 0x17, 0x16, 0x0C, 0x03, 0x00, 0x15, 0xFF, 0x00, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x34, 0x04, 0x0B, 0x04, 0x07, 0x70, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_22.h b/NPR_14/source/SI4463/SI4463_config_22.h index c9c3ce1..e7a231d 100644 --- a/NPR_14/source/SI4463/SI4463_config_22.h +++ b/NPR_14/source/SI4463/SI4463_config_22.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_22 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x18, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x93, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8C, 0x4A, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x18, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x93, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8C, 0x4A, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x00, 0xD3, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_22_2m.h b/NPR_14/source/SI4463/SI4463_config_22_2m.h index f78fc9a..db41e80 100644 --- a/NPR_14/source/SI4463/SI4463_config_22_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_22_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_22 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x49, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xBA, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCD, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x36, 0xEE, 0x80, 0x09, 0xC9, 0xC3, 0x80, 0x00, 0x49, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xBA, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x20, 0x00, 0xE8, 0x00, 0x53, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x24, 0xDD, 0x06, 0x2B, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xCD, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x12, 0x12, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xF9, 0x01, 0x00, 0xFF, 0x06, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x07, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, 0xCC, 0xA1, 0x30, 0xA0, 0x21, 0xD1, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xB9, 0xC9, 0xEA, 0x05, 0x12, 0x11, 0x0A, 0x04, 0x15, 0xFC, 0x03, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x39, 0x04, 0x0B, 0x05, 0x04, 0x01, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_23.h b/NPR_14/source/SI4463/SI4463_config_23.h index 2027cd7..2a0b73c 100644 --- a/NPR_14/source/SI4463/SI4463_config_23.h +++ b/NPR_14/source/SI4463/SI4463_config_23.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_23 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xC3, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x28, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xF6, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8A, 0x3E, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0xC3, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_23_2m.h b/NPR_14/source/SI4463/SI4463_config_23_2m.h index 6047c66..949d1df 100644 --- a/NPR_14/source/SI4463/SI4463_config_23_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_23_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_23 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x7A, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xE1, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x03, 0x37, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x2D, 0xC6, 0xC0, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x7A, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xE1, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x64, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x05, 0x1E, 0xB8, 0x05, 0x1F, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x03, 0x37, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x0B, 0x0B, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x06, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, 0xA2, 0x81, 0x26, 0xAF, 0x3F, 0xEE, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC8, 0xC7, 0xDB, 0xF2, 0x02, 0x08, 0x07, 0x03, 0x15, 0xFC, 0x0F, 0x00, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x3D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_24.h b/NPR_14/source/SI4463/SI4463_config_24.h index 94641ca..584ba74 100644 --- a/NPR_14/source/SI4463/SI4463_config_24.h +++ b/NPR_14/source/SI4463/SI4463_config_24.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_24 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x44, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0x44, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x7C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x46, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x23, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x37, 0x09, 0x00, 0x00, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x44, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0x44, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x03, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x7C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0A, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x38, 0x0A, 0xAA, 0xAA, 0x0A, 0xEC, 0x20, 0xFE, \ + 0x00 \ } diff --git a/NPR_14/source/SI4463/SI4463_config_24_2m.h b/NPR_14/source/SI4463/SI4463_config_24_2m.h index 8350c94..359410a 100644 --- a/NPR_14/source/SI4463/SI4463_config_24_2m.h +++ b/NPR_14/source/SI4463/SI4463_config_24_2m.h @@ -1,125 +1,125 @@ #define RADIO_CONFIGURATION_DATA_ARRAY_24 { \ - 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ - 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ - 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ - 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ - 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ - 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ - 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ - 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ - 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ - 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ - 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ - 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ - 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ - 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ - 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ - 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ - 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ - 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ - 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ - 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ - 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ - 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ - 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ - 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ - 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ - 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ - 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ - 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ - 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ - 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ - 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ - 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ - 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ - 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ - 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ - 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ - 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ - 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ - 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ - 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ - 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ - 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ - 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ - 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ - 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ - 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ - 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ - 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ - 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ - 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ - 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ - 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ - 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ - 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ - 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ - 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ - 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ - 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ - 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ - 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ - 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ - 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ - 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ - 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ - 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ - 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ - 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ - 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ - 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ - 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ - 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ - 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ - 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ - 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ - 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ - 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ - 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ - 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ - 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0xCC, \ - 0x05, 0x11, 0x20, 0x01, 0x0C, 0xCD, \ - 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ - 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ - 0x07, 0x11, 0x20, 0x03, 0x30, 0x04, 0x74, 0xA0, \ - 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ - 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ - 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ - 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ - 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ - 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ - 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ - 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, \ - 0x10, 0x11, 0x21, 0x0C, 0x0C, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, \ - 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, \ - 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ - 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ - 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ - 0x00 \ + 0x08, 0x04, 0x21, 0x71, 0x4B, 0x00, 0x00, 0xDC, 0x95, \ + 0x08, 0x05, 0xA6, 0x22, 0x21, 0xF0, 0x41, 0x5B, 0x26, \ + 0x08, 0xE2, 0x2F, 0x1C, 0xBB, 0x0A, 0xA8, 0x94, 0x28, \ + 0x08, 0x05, 0x87, 0x67, 0xE2, 0x58, 0x1A, 0x07, 0x5B, \ + 0x08, 0xE1, 0xD0, 0x72, 0xD8, 0x8A, 0xB8, 0x5B, 0x7D, \ + 0x08, 0x05, 0x11, 0xEC, 0x9E, 0x28, 0x23, 0x1B, 0x6D, \ + 0x08, 0xE2, 0x4F, 0x8A, 0xB2, 0xA9, 0x29, 0x14, 0x13, \ + 0x08, 0x05, 0xD1, 0x2E, 0x71, 0x6A, 0x51, 0x4C, 0x2C, \ + 0x08, 0xE5, 0x80, 0x27, 0x42, 0xA4, 0x69, 0xB0, 0x7F, \ + 0x08, 0x05, 0xAA, 0x81, 0x2A, 0xBD, 0x45, 0xE8, 0xA8, \ + 0x08, 0xEA, 0xE4, 0xF0, 0x24, 0xC9, 0x9F, 0xCC, 0x3C, \ + 0x08, 0x05, 0x08, 0xF5, 0x05, 0x04, 0x27, 0x62, 0x98, \ + 0x08, 0xEA, 0x6B, 0x62, 0x84, 0xA1, 0xF9, 0x4A, 0xE2, \ + 0x08, 0x05, 0xE9, 0x77, 0x05, 0x4F, 0x84, 0xEE, 0x35, \ + 0x08, 0xE2, 0x43, 0xC3, 0x8D, 0xFB, 0xAD, 0x54, 0x25, \ + 0x08, 0x05, 0x14, 0x06, 0x5E, 0x39, 0x36, 0x2F, 0x45, \ + 0x08, 0xEA, 0x0C, 0x1C, 0x74, 0xD0, 0x11, 0xFC, 0x32, \ + 0x08, 0x05, 0xDA, 0x38, 0xBA, 0x0E, 0x3C, 0xE7, 0x8B, \ + 0x08, 0xEA, 0xB0, 0x09, 0xE6, 0xFF, 0x94, 0xBB, 0xA9, \ + 0x08, 0x05, 0xD7, 0x11, 0x29, 0xFE, 0xDC, 0x71, 0xD5, \ + 0x08, 0xEA, 0x7F, 0x83, 0xA7, 0x60, 0x90, 0x62, 0x18, \ + 0x08, 0x05, 0x84, 0x7F, 0x6A, 0xD1, 0x91, 0xC6, 0x52, \ + 0x08, 0xEA, 0x2A, 0xD8, 0x7B, 0x8E, 0x4A, 0x9F, 0x91, \ + 0x08, 0x05, 0xBD, 0xAA, 0x9D, 0x16, 0x18, 0x06, 0x15, \ + 0x08, 0xE2, 0x55, 0xAD, 0x2D, 0x0A, 0x14, 0x1F, 0x5D, \ + 0x08, 0x05, 0xD3, 0xE0, 0x7C, 0x39, 0xCF, 0x01, 0xF0, \ + 0x08, 0xEF, 0x3A, 0x91, 0x72, 0x6A, 0x03, 0xBB, 0x96, \ + 0x08, 0xE7, 0x83, 0x6D, 0xA4, 0x92, 0xFC, 0x13, 0xA7, \ + 0x08, 0xEF, 0xF8, 0xFD, 0xCF, 0x62, 0x07, 0x6F, 0x1E, \ + 0x08, 0xE7, 0x4C, 0xEA, 0x4A, 0x75, 0x4F, 0xD6, 0xCF, \ + 0x08, 0xE2, 0xF6, 0x11, 0xE4, 0x26, 0x0D, 0x4D, 0xC6, \ + 0x08, 0x05, 0xFB, 0xBF, 0xE8, 0x07, 0x89, 0xC3, 0x51, \ + 0x08, 0xEF, 0x82, 0x27, 0x04, 0x3F, 0x96, 0xA8, 0x58, \ + 0x08, 0xE7, 0x41, 0x29, 0x3C, 0x75, 0x2A, 0x03, 0x1C, \ + 0x08, 0xEF, 0xAF, 0x59, 0x98, 0x36, 0xAA, 0x0F, 0x06, \ + 0x08, 0xE6, 0xF6, 0x93, 0x41, 0x2D, 0xEC, 0x0E, 0x99, \ + 0x08, 0x05, 0x29, 0x19, 0x90, 0xE5, 0xAA, 0x36, 0x40, \ + 0x08, 0xE7, 0xFB, 0x68, 0x10, 0x7D, 0x77, 0x5D, 0xC0, \ + 0x08, 0xE7, 0xCB, 0xB4, 0xDD, 0xCE, 0x90, 0x54, 0xBE, \ + 0x08, 0xE7, 0x72, 0x8A, 0xD6, 0x02, 0xF4, 0xDD, 0xCC, \ + 0x08, 0xE7, 0x6A, 0x21, 0x0B, 0x02, 0x86, 0xEC, 0x15, \ + 0x08, 0xE7, 0x7B, 0x7C, 0x3D, 0x6B, 0x81, 0x03, 0xD0, \ + 0x08, 0xEF, 0x7D, 0x61, 0x36, 0x94, 0x7C, 0xA0, 0xDF, \ + 0x08, 0xEF, 0xCC, 0x85, 0x3B, 0xDA, 0xE0, 0x5C, 0x1C, \ + 0x08, 0xE7, 0xE3, 0x75, 0xBB, 0x39, 0x22, 0x4B, 0xA8, \ + 0x08, 0xEF, 0xF9, 0xCE, 0xE0, 0x5E, 0xEB, 0x1D, 0xCB, \ + 0x08, 0xE7, 0xBD, 0xE2, 0x70, 0xD5, 0xAB, 0x4E, 0x3F, \ + 0x08, 0xE7, 0xB7, 0x8D, 0x20, 0x68, 0x6B, 0x09, 0x52, \ + 0x08, 0xEF, 0xA1, 0x1B, 0x90, 0xCD, 0x98, 0x00, 0x63, \ + 0x08, 0xEF, 0x54, 0x67, 0x5D, 0x9C, 0x11, 0xFC, 0x45, \ + 0x08, 0xE7, 0xD4, 0x9B, 0xC8, 0x97, 0xBE, 0x8A, 0x07, \ + 0x08, 0xEF, 0x52, 0x8D, 0x90, 0x63, 0x73, 0xD5, 0x2A, \ + 0x08, 0xEF, 0x03, 0xBC, 0x6E, 0x1C, 0x76, 0xBE, 0x4A, \ + 0x08, 0xE7, 0xC2, 0xED, 0x67, 0xBA, 0x5E, 0x66, 0x21, \ + 0x08, 0xEF, 0xE7, 0x3F, 0x87, 0xBE, 0xE0, 0x7A, 0x6D, \ + 0x08, 0xE7, 0xC9, 0x70, 0x93, 0x1D, 0x64, 0xF5, 0x6C, \ + 0x08, 0xEF, 0xF5, 0x28, 0x08, 0x34, 0xB3, 0xB6, 0x2C, \ + 0x08, 0xEF, 0x3A, 0x0A, 0xEC, 0x0F, 0xDB, 0x56, 0xCA, \ + 0x08, 0xEF, 0x39, 0xA0, 0x6E, 0xED, 0x79, 0xD0, 0x24, \ + 0x08, 0xE7, 0x6C, 0x0B, 0xAF, 0xA9, 0x4E, 0x40, 0xB5, \ + 0x08, 0xE9, 0xB9, 0xAF, 0xBF, 0x25, 0x50, 0xD1, 0x37, \ + 0x08, 0x05, 0x9E, 0xDB, 0xDE, 0x3F, 0x94, 0xE9, 0x6B, \ + 0x08, 0xEC, 0xC5, 0x05, 0xAA, 0x57, 0xDC, 0x8A, 0x5E, \ + 0x08, 0x05, 0x70, 0xDA, 0x84, 0x84, 0xDD, 0xCA, 0x90, \ + 0x07, 0x02, 0x81, 0x00, 0x01, 0xC9, 0xC3, 0x80, \ + 0x08, 0x13, 0x00, 0x20, 0x21, 0x20, 0x00, 0x00, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x00, 0x52, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x05, 0x11, 0x10, 0x01, 0x04, 0x21, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x03, 0x00, 0x07, 0x02, 0x71, 0x00, 0x05, 0xC9, 0xC3, 0x80, 0x00, 0x00, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xD2, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x02, 0x80, 0x00, 0xB0, 0x10, 0x0C, 0xE8, 0x00, 0x4E, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x06, 0x8D, 0xB9, 0x00, 0x00, 0x02, 0xC0, 0x08, 0x00, 0x12, 0x00, 0x69, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x01, 0x5C, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE0, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x11, 0x11, 0x11, 0x80, 0x1A, 0x20, 0x00, 0x00, 0x28, 0x0C, 0xA4, 0x23, \ + 0x09, 0x11, 0x20, 0x05, 0x45, 0x03, 0x00, 0x85, 0x01, 0x00, \ + 0x08, 0x11, 0x20, 0x04, 0x4B, 0x06, 0x09, 0x10, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x94, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x03, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x04, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, 0x7E, 0x64, 0x1B, 0xBA, 0x58, 0x0B, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xDD, 0xCE, 0xD6, 0xE6, 0xF6, 0x00, 0x03, 0x03, 0x15, 0xF0, 0x3F, 0x00, \ + 0x05, 0x11, 0x22, 0x01, 0x03, 0x1D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x2C, 0x0E, 0x0B, 0x04, 0x0C, 0x73, 0x03, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x3B, 0x0B, 0x00, 0x00, 0x20, 0xC5, 0x20, 0xFA, \ + 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x05, 0x17, 0x56, 0x10, 0xCA, 0xF0, \ + 0x05, 0x17, 0x13, 0x10, 0xCA, 0xF0, \ + 0x05, 0x11, 0x00, 0x01, 0x01, 0x00, \ + 0x05, 0x11, 0x00, 0x01, 0x03, 0x20, \ + 0x07, 0x11, 0x01, 0x03, 0x00, 0x03, 0x33, 0x01, \ + 0x08, 0x11, 0x02, 0x04, 0x00, 0x04, 0x06, 0x0A, 0x09, \ + 0x0D, 0x11, 0x10, 0x09, 0x00, 0x10, 0x14, 0x00, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, \ + 0x0A, 0x11, 0x11, 0x06, 0x00, 0x0A, 0x45, 0xD2, 0xCC, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x00, 0x04, 0x01, 0x08, 0xFF, 0xFF, 0x20, 0x22, 0x00, 0x2A, 0x01, 0x5A, 0x30, \ + 0x10, 0x11, 0x12, 0x0C, 0x0C, 0x40, 0x00, 0x01, 0x16, 0x80, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x12, 0x0C, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x09, 0x11, 0x12, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x08, 0x11, 0x12, 0x04, 0x36, 0x00, 0x00, 0x00, 0x00, \ + 0x10, 0x11, 0x20, 0x0C, 0x00, 0x05, 0x00, 0x07, 0x4C, 0x4B, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0xCC, \ + 0x05, 0x11, 0x20, 0x01, 0x0C, 0xCD, \ + 0x10, 0x11, 0x20, 0x0C, 0x18, 0x05, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x30, 0x00, 0xE8, 0x00, 0x3C, \ + 0x10, 0x11, 0x20, 0x0C, 0x24, 0x08, 0x88, 0x89, 0x07, 0xFF, 0x02, 0x02, 0x00, 0x00, 0x23, 0x8F, 0xFF, \ + 0x07, 0x11, 0x20, 0x03, 0x30, 0x04, 0x74, 0xA0, \ + 0x05, 0x11, 0x20, 0x01, 0x35, 0xE2, \ + 0x10, 0x11, 0x20, 0x0C, 0x38, 0x22, 0x07, 0x07, 0x00, 0x1A, 0x15, 0x55, 0x00, 0x27, 0x0C, 0xA4, 0x23, \ + 0x0E, 0x11, 0x20, 0x0A, 0x45, 0x03, 0x01, 0x5A, 0x01, 0x00, 0xFF, 0x08, 0x02, 0x18, 0x40, \ + 0x06, 0x11, 0x20, 0x02, 0x50, 0x84, 0x0D, \ + 0x06, 0x11, 0x20, 0x02, 0x54, 0x04, 0x07, \ + 0x05, 0x11, 0x20, 0x01, 0x57, 0x00, \ + 0x09, 0x11, 0x20, 0x05, 0x5B, 0x40, 0x04, 0x0A, 0x78, 0x20, \ + 0x10, 0x11, 0x21, 0x0C, 0x00, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, \ + 0x10, 0x11, 0x21, 0x0C, 0x0C, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, 0xFF, 0xBA, 0x0F, 0x51, 0xCF, 0xA9, \ + 0x10, 0x11, 0x21, 0x0C, 0x18, 0xC9, 0xFC, 0x1B, 0x1E, 0x0F, 0x01, 0xFC, 0xFD, 0x15, 0xFF, 0x00, 0x0F, \ + 0x08, 0x11, 0x22, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x5D, \ + 0x0B, 0x11, 0x23, 0x07, 0x00, 0x01, 0x05, 0x0B, 0x05, 0x02, 0x00, 0x03, \ + 0x10, 0x11, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x0C, 0x11, 0x40, 0x08, 0x00, 0x39, 0x0B, 0x33, 0x33, 0x20, 0xC5, 0x20, 0xFA, \ + 0x00 \ } diff --git a/NPR_14/source/SPI_F4HDK.cpp b/NPR_14/source/SPI_F4HDK.cpp index 4ee9bf2..fdf677c 100644 --- a/NPR_14/source/SPI_F4HDK.cpp +++ b/NPR_14/source/SPI_F4HDK.cpp @@ -11,10 +11,10 @@ int spi_master_transfer_2(spi_t *obj, const unsigned char *tx, size_t tx_length, struct spi_s *spiobj = SPI_S(obj); SPI_HandleTypeDef *handle = &(spiobj->handle); - if(tx_length < rx_length) { - tx_length = rx_length; - } - + if(tx_length < rx_length) { + tx_length = rx_length; + } + /* Use 10ms timeout */ uint16_t ret = HAL_SPI_TransmitReceive(handle, (uint8_t *)tx, (uint8_t *)rx, tx_length, 3); //3 @@ -26,5 +26,5 @@ int spi_master_transfer_2(spi_t *obj, const unsigned char *tx, size_t tx_length, } int SPI_F4HDK::transfer_2(const unsigned char *tx_buffer, int tx_length, unsigned char *rx_buffer, int rx_length) { - return spi_master_transfer_2 (&_spi, tx_buffer, tx_length, rx_buffer, rx_length); + return spi_master_transfer_2 (&_spi, tx_buffer, tx_length, rx_buffer, rx_length); } diff --git a/NPR_14/source/TDMA.cpp b/NPR_14/source/TDMA.cpp index 92bc18d..de4cd40 100644 --- a/NPR_14/source/TDMA.cpp +++ b/NPR_14/source/TDMA.cpp @@ -37,422 +37,422 @@ static unsigned char my_multiframe_ID; static unsigned int TDMA_offset_multi_frame; void TDMA_init_all(void) { - int i; - for (i=0; ilast_ready - TXPS_FIFO->RD_point); - //uplink_buffer_size = uplink_buffer_size_temp / 300; //number of frames - uplink_buffer_size = compute_TX_buff_size_global(); - //if ( (uplink_buffer_size_temp % 300) > 0) {uplink_buffer_size++;} - if (uplink_buffer_size > 30) {uplink_buffer_size = 30;} - TDMA_byte = TDMA_byte + (uplink_buffer_size & 0x1F); - } - if (synchro) { - TDMA_byte = TDMA_byte + 0x20; - } - TDMA_byte = TDMA_byte + parity_bit_elab[TDMA_byte & 0x7F]; // parity bit - return TDMA_byte; + unsigned char TDMA_byte; + unsigned long int uplink_buffer_size; + // unsigned long int uplink_buffer_size_temp; + if (is_TDMA_master) { // TDMA Master + TDMA_byte = 0x40;//uplink/downlink bit + TDMA_byte = TDMA_byte + (TDMA_frame_nb & 0x1F); + if (synchro) { + TDMA_frame_nb++; + } + } else { // TDMA client + TDMA_byte = 0x00; //uplink/downlink bit + // uplink buffer size + //uplink_buffer_size_temp = (TXPS_FIFO->last_ready - TXPS_FIFO->RD_point); + //uplink_buffer_size = uplink_buffer_size_temp / 300; //number of frames + uplink_buffer_size = compute_TX_buff_size_global(); + //if ( (uplink_buffer_size_temp % 300) > 0) {uplink_buffer_size++;} + if (uplink_buffer_size > 30) {uplink_buffer_size = 30;} + TDMA_byte = TDMA_byte + (uplink_buffer_size & 0x1F); + } + if (synchro) { + TDMA_byte = TDMA_byte + 0x20; + } + TDMA_byte = TDMA_byte + parity_bit_elab[TDMA_byte & 0x7F]; // parity bit + return TDMA_byte; } short int TDMA_TA_measure_single_frame(unsigned int frame_timer, unsigned char TDMA_byte, unsigned char client_byte, int frame_size_loc) { - int measured_offset = 0x7FFF; - int TA_answer = 0x7FFF; - unsigned char client_ID = 0xF0; - unsigned char is_downlink; - - is_downlink = TDMA_byte & 0x40; - - if ( ((TDMA_byte & 0x20) == 0x20) && (is_downlink == 0) && (parity_bit_check[TDMA_byte]) && (parity_bit_check[client_byte]) ) { //first frame top-synchro - client_ID = client_byte & 0x7F; - if (CONF_master_FDD == 1) { - measured_offset = frame_timer; - } else { - measured_offset = frame_timer - ((TDMA_slave_last_master_top & 0xFFFFFF));// + 10*TDMA_table_offset[client_ID]); - } - if (frame_size_loc < 114) { - measured_offset = measured_offset + (114 - frame_size_loc) * 0.85; - } - if ( (client_ID < radio_addr_table_size) && (CONF_radio_addr_table_status[client_ID]) ) { - TA_answer = measured_offset - (10*TDMA_table_offset[client_ID]); - if ( (TA_answer > -200) && (TA_answer < 2000) ) {// -1000 .. 5000 - TDMA_table_TA[client_ID] = 0.9*TDMA_table_TA[client_ID] + 1*TA_answer; - } - //printf ("id:%i TA_single:%i TA_filt:%i\r\n", client_ID, TA_answer, TDMA_table_TA[client_ID]); - } - else if (client_ID == 0x7E) { - TA_answer = measured_offset - (10*TDMA_offset_multi_frame); - //printf ("id:%i TAth:%i\r\n", client_ID, TA_answer); - } - } - return (short int)TA_answer; + int measured_offset = 0x7FFF; + int TA_answer = 0x7FFF; + unsigned char client_ID = 0xF0; + unsigned char is_downlink; + + is_downlink = TDMA_byte & 0x40; + + if ( ((TDMA_byte & 0x20) == 0x20) && (is_downlink == 0) && (parity_bit_check[TDMA_byte]) && (parity_bit_check[client_byte]) ) { //first frame top-synchro + client_ID = client_byte & 0x7F; + if (CONF_master_FDD == 1) { + measured_offset = frame_timer; + } else { + measured_offset = frame_timer - ((TDMA_slave_last_master_top & 0xFFFFFF));// + 10*TDMA_table_offset[client_ID]); + } + if (frame_size_loc < 114) { + measured_offset = measured_offset + (114 - frame_size_loc) * 0.85; + } + if ( (client_ID < radio_addr_table_size) && (CONF_radio_addr_table_status[client_ID]) ) { + TA_answer = measured_offset - (10*TDMA_table_offset[client_ID]); + if ( (TA_answer > -200) && (TA_answer < 2000) ) {// -1000 .. 5000 + TDMA_table_TA[client_ID] = 0.9*TDMA_table_TA[client_ID] + 1*TA_answer; + } + //printf ("id:%i TA_single:%i TA_filt:%i\r\n", client_ID, TA_answer, TDMA_table_TA[client_ID]); + } + else if (client_ID == 0x7E) { + TA_answer = measured_offset - (10*TDMA_offset_multi_frame); + //printf ("id:%i TAth:%i\r\n", client_ID, TA_answer); + } + } + return (short int)TA_answer; } void TDMA_init_TA(unsigned char client_ID, int TA_input) { - if ( (TA_input > -200) && (TA_input < 2000) ) { - TDMA_table_TA[client_ID] = 10*TA_input; - } + if ( (TA_input > -200) && (TA_input < 2000) ) { + TDMA_table_TA[client_ID] = 10*TA_input; + } } void TDMA_top_measure(void) { - TDMA_slave_last_master_top = GLOBAL_timer.read_us(); - TDMA_slave_last_master_top = TDMA_slave_last_master_top + 0; + TDMA_slave_last_master_top = GLOBAL_timer.read_us(); + TDMA_slave_last_master_top = TDMA_slave_last_master_top + 0; } void TDMA_FDD_up_top_measure(void) { - TDMA_slave_last_master_top = GLOBAL_timer.read_us(); - TDMA_slave_last_master_top = TDMA_slave_last_master_top + 0; - RX_top_FDD_up_counter++; - //printf("t\r\n"); + TDMA_slave_last_master_top = GLOBAL_timer.read_us(); + TDMA_slave_last_master_top = TDMA_slave_last_master_top + 0; + RX_top_FDD_up_counter++; + //printf("t\r\n"); } void TDMA_byte_RX_interp (unsigned char TDMA_byte, unsigned char client_ID_byte, unsigned char protocol, unsigned int RX_time) { - // a traiter : top client / top master / frame client / - unsigned char client_ID; - unsigned char uplink_buffer_size; - unsigned char TDMA_synchro; - unsigned char is_downlink; - unsigned int loc_time; - TDMA_synchro = TDMA_byte & 0x20; - is_downlink = TDMA_byte & 0x40; - client_ID = client_ID_byte & 0x7F; - if (parity_bit_check[TDMA_byte]) { // checks parity bit - //if(1) { - if (is_TDMA_master) { // TDMA Master - if (is_downlink == 0) { //only uplink frames - uplink_buffer_size = TDMA_byte & 0x1F; - if ( (client_ID < radio_addr_table_size) && (parity_bit_check[client_ID_byte]) ) { - TDMA_table_uplink_st[client_ID] = uplink_buffer_size; - TDMA_table_up2date[client_ID] = 1; - if (uplink_buffer_size > 1) { // force to fast slots - TDMA_table_uplink_usage[client_ID] = 32; - TDMA_table_is_fast[client_ID] = 1; - } - //printf("%i upl%i mem%i fast%i\r\n", client_ID, uplink_buffer_size, TDMA_table_uplink_usage[client_ID],TDMA_table_is_fast[client_ID]); - if (TDMA_synchro) { - TDMA_table_RX_time[client_ID] = RX_time; - } - } - } - } else { // TDMA client - TDMA_frame_nb = TDMA_byte & 0x1F; - if ( (TDMA_synchro) && (is_downlink) ) { //(slave_alloc_RX_age < 2) ) { - TDMA_slave_last_master_top = RX_time; - //debug_counter ++; - if ( (slave_alloc_RX_age < 2) && (CONF_radio_state_ON_OFF) ) { - if ( (TDMA_frame_nb & my_multiframe_mask) == (my_multiframe_ID & my_multiframe_mask) ) { - loc_time = GLOBAL_timer.read_us(); - time_next_TX_slave = ((RX_time + offset_time_TX_slave) & 0xFFFFFF );//!!!test TA june 2018 +380 - SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, (time_next_TX_slave - loc_time - CONF_delay_prepTX1_2_TX) &0xFFFFFF ); - slave_alloc_RX_age++; - slave_new_burst_tx_pending = 1; - } - } - } - } - } + // a traiter : top client / top master / frame client / + unsigned char client_ID; + unsigned char uplink_buffer_size; + unsigned char TDMA_synchro; + unsigned char is_downlink; + unsigned int loc_time; + TDMA_synchro = TDMA_byte & 0x20; + is_downlink = TDMA_byte & 0x40; + client_ID = client_ID_byte & 0x7F; + if (parity_bit_check[TDMA_byte]) { // checks parity bit + //if(1) { + if (is_TDMA_master) { // TDMA Master + if (is_downlink == 0) { //only uplink frames + uplink_buffer_size = TDMA_byte & 0x1F; + if ( (client_ID < radio_addr_table_size) && (parity_bit_check[client_ID_byte]) ) { + TDMA_table_uplink_st[client_ID] = uplink_buffer_size; + TDMA_table_up2date[client_ID] = 1; + if (uplink_buffer_size > 1) { // force to fast slots + TDMA_table_uplink_usage[client_ID] = 32; + TDMA_table_is_fast[client_ID] = 1; + } + //printf("%i upl%i mem%i fast%i\r\n", client_ID, uplink_buffer_size, TDMA_table_uplink_usage[client_ID],TDMA_table_is_fast[client_ID]); + if (TDMA_synchro) { + TDMA_table_RX_time[client_ID] = RX_time; + } + } + } + } else { // TDMA client + TDMA_frame_nb = TDMA_byte & 0x1F; + if ( (TDMA_synchro) && (is_downlink) ) { //(slave_alloc_RX_age < 2) ) { + TDMA_slave_last_master_top = RX_time; + //debug_counter ++; + if ( (slave_alloc_RX_age < 2) && (CONF_radio_state_ON_OFF) ) { + if ( (TDMA_frame_nb & my_multiframe_mask) == (my_multiframe_ID & my_multiframe_mask) ) { + loc_time = GLOBAL_timer.read_us(); + time_next_TX_slave = ((RX_time + offset_time_TX_slave) & 0xFFFFFF );//!!!test TA june 2018 +380 + SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, (time_next_TX_slave - loc_time - CONF_delay_prepTX1_2_TX) &0xFFFFFF ); + slave_alloc_RX_age++; + slave_new_burst_tx_pending = 1; + } + } + } + } + } } //TDMA_slave_timeout : allow 1 more burst if no TOP received from Master void TDMA_slave_timeout (void) { - unsigned int loc_time; - unsigned int master_top_age; - loc_time = GLOBAL_timer.read_us(); - master_top_age = loc_time - TDMA_slave_last_master_top; - if ( (master_top_age > (CONF_TDMA_frame_duration + 8000) ) && (master_top_age < (CONF_TDMA_frame_duration + 10000)) ) { - if ( (slave_alloc_RX_age < 2) && (slave_new_burst_tx_pending == 0) && (CONF_radio_state_ON_OFF) ) { - TDMA_frame_nb = (TDMA_frame_nb+1) & 0x1F; - if ( (TDMA_frame_nb & my_multiframe_mask) == (my_multiframe_ID & my_multiframe_mask) ) { - time_next_TX_slave = (TDMA_slave_last_master_top + CONF_TDMA_frame_duration + offset_time_TX_slave) & 0xFFFFFF; - SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, (time_next_TX_slave - loc_time - CONF_delay_prepTX1_2_TX) &0xFFFFFF ); - slave_alloc_RX_age++; - slave_new_burst_tx_pending = 1; - } - } - } + unsigned int loc_time; + unsigned int master_top_age; + loc_time = GLOBAL_timer.read_us(); + master_top_age = loc_time - TDMA_slave_last_master_top; + if ( (master_top_age > (CONF_TDMA_frame_duration + 8000) ) && (master_top_age < (CONF_TDMA_frame_duration + 10000)) ) { + if ( (slave_alloc_RX_age < 2) && (slave_new_burst_tx_pending == 0) && (CONF_radio_state_ON_OFF) ) { + TDMA_frame_nb = (TDMA_frame_nb+1) & 0x1F; + if ( (TDMA_frame_nb & my_multiframe_mask) == (my_multiframe_ID & my_multiframe_mask) ) { + time_next_TX_slave = (TDMA_slave_last_master_top + CONF_TDMA_frame_duration + offset_time_TX_slave) & 0xFFFFFF; + SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, (time_next_TX_slave - loc_time - CONF_delay_prepTX1_2_TX) &0xFFFFFF ); + slave_alloc_RX_age++; + slave_new_burst_tx_pending = 1; + } + } + } } void TDMA_master_allocation () { - int size_wo_FEC; - int size_w_FEC; - int i; - int allocated_slots; - int nb_fast_clients; - unsigned int loc_time_offset; - long int local_TA; - unsigned int downlink_buffer_size; - // unsigned int downlink_buffer_size_temp; - static unsigned char TDMA_alloc_frame_raw[150]; - unsigned char rframe_length; - unsigned char loc_client_needs[radio_addr_table_size]; - unsigned char loc_master_needs; - unsigned char remaining_needs; - - for (i=0; i 0) ) { - TDMA_table_is_fast[i] = 1; - TDMA_table_uplink_usage[i]--; - } - } - //if ((TDMA_frame_nb & 0x7) == 0) { // once every 8 frames - if ((TDMA_frame_nb & 0x3) == 0) { // once every 4 frames - TDMA_master_allocation_slow(); - } - // ** TDMA allocation algorithm for fast slots ** - // 1) Master computes its own downlink buffer size - //downlink_buffer_size_temp = (TXPS_FIFO->last_ready - TXPS_FIFO->RD_point); - //downlink_buffer_size = downlink_buffer_size_temp / 300; //number of frames - //if ((downlink_buffer_size_temp % 300) > 0) {downlink_buffer_size++;} - downlink_buffer_size = compute_TX_buff_size_global(); - if (downlink_buffer_size > 30) {downlink_buffer_size = 30;} - // 2) if no TDMA uplink received from client, lower its need - for (i=0; i 0) ) { - TDMA_table_uplink_st[i]--; - } - TDMA_table_up2date[i] = 0; - } - // 3) init allocation table - // copy uplink state and allocate 1 slot to each active - // Master - loc_master_needs = downlink_buffer_size; // copy - master_allocated_slots = 1; - if (loc_master_needs>0) {loc_master_needs--;} // decrement - allocated_slots = 1; // at least 1 for master - // Clients - nb_fast_clients = 0; - for (i=0; i0) {loc_client_needs[i]--;} // decrement - allocated_slots++; - } - } - // 4) 1st allocation pass, round robin - remaining_needs = 1; - while ( (allocated_slots < 15) && (remaining_needs > 0) ) { - // master - if ( (loc_master_needs > 0) && (allocated_slots < 15) ) { - master_allocated_slots++; - loc_master_needs--; - allocated_slots++; - } - if ( (loc_master_needs > 0) && (allocated_slots < 15) && (nb_fast_clients > 1) ) {// master counts 2 times if more than 1 client - master_allocated_slots++; - loc_master_needs--; - allocated_slots++; - } - remaining_needs = loc_master_needs; - for (i=0; i0) && (allocated_slots < 15) ) { - TDMA_table_slots[i]++; - loc_client_needs[i]--; - allocated_slots++; - remaining_needs = remaining_needs + loc_client_needs[i]; - } - } - } - // 5) 2nd allocation pass, round robin of remaining, even without needs - while (allocated_slots < 15) { - master_allocated_slots++; - allocated_slots++; - for (i=0; i -2000) && (local_TA < 20000) ) { - TDMA_table_offset[i] = (loc_time_offset/10) - (local_TA/100); - } else { - TDMA_table_offset[i] = (loc_time_offset/10); - } - loc_time_offset = loc_time_offset + (TDMA_table_slots[i] * (CONF_TDMA_slot_duration + CONF_TDMA_slot_margin) ); - //printf("client %i %i %i ", i, TDMA_table_offset[i], TDMA_table_slots[i]*CONF_TDMA_slot_duration); - } - } - //printf("\r\n"); - //multi frame x4 - TDMA_offset_multi_frame = loc_time_offset / 10; - for (i=0; i<4; i++) { - if ( (CONF_radio_addr_table_status[i]) && (TDMA_table_is_fast[i]==0) ) { - local_TA = TDMA_table_TA[i]; - if ( (local_TA > -2000) && (local_TA < 20000) ) { - TDMA_table_offset[i] = TDMA_offset_multi_frame - (local_TA/100); - } else { - TDMA_table_offset[i] = TDMA_offset_multi_frame; - } - } - } - loc_time_offset = loc_time_offset + CONF_TDMA_slot_duration + CONF_TDMA_slot_margin; - TDMA_offset_multi_frame = loc_time_offset / 10; - for (i=4; i -2000) && (local_TA < 20000) ) { - TDMA_table_offset[i] = TDMA_offset_multi_frame - (local_TA/100); - } else { - TDMA_table_offset[i] = TDMA_offset_multi_frame; - } - } - } - - // ** TDMA allocation frame construction ** - TDMA_alloc_frame_raw[0] = 0xFF; // address = broadcast - TDMA_alloc_frame_raw[1] = 0x1F; // protocol = TDMA allocation - size_wo_FEC = 2; - for (i=0; i>8; // time offset MSB - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_table_slots[i] & 0xF); // TDMA slot length (4xLSb) and power (MSb) - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = 0; // ID multi frame (4xLSb) - size_wo_FEC++; - } else { // inside slow slot - TDMA_alloc_frame_raw[size_wo_FEC] = i; // client ID - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = TDMA_table_offset[i] & 0xFF; // time offset LSB - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_table_offset[i] & 0xFF00)>>8; // time offset MSB - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = 1; // TDMA slot length (4xLSb) and power (MSb) - size_wo_FEC++; - //TDMA_alloc_frame_raw[size_wo_FEC] = 0x30 + (i & 0x0F); //multi frame period (4xMSb) ID multi frame (4xLSb) - TDMA_alloc_frame_raw[size_wo_FEC] = 0x20 + (i & 0x03); //multi frame period (4xMSb) ID multi frame (4xLSb) - size_wo_FEC++; - } - } - } - //Discovery slot multi frame - TDMA_alloc_frame_raw[size_wo_FEC] = 0x7E; // client ID - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = TDMA_offset_multi_frame & 0xFF; // time offset LSB - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_offset_multi_frame & 0xFF00)>>8; // time offset MSB - size_wo_FEC++; - TDMA_alloc_frame_raw[size_wo_FEC] = 1; // TDMA slot length (4xLSb) and power (MSb) - size_wo_FEC++; - //TDMA_alloc_frame_raw[size_wo_FEC] = 0x37; //multi frame period=3 (4xMSb); ID multi frame=7 (4xLSb) - TDMA_alloc_frame_raw[size_wo_FEC] = 0x23; //multi frame period=2 (4xMSb); ID multi frame=7 (4xLSb) - size_wo_FEC++; - //END - TDMA_alloc_frame_raw[size_wo_FEC] = 0xFF; // used to detect end of TDMA frame - size_wo_FEC++; - if (size_wo_FEC < 66) { - size_wo_FEC = 66; - } - size_w_FEC = size_w_FEC_compute (size_wo_FEC); - rframe_length = size_w_FEC + 1 - SI4463_offset_size; + int size_wo_FEC; + int size_w_FEC; + int i; + int allocated_slots; + int nb_fast_clients; + unsigned int loc_time_offset; + long int local_TA; + unsigned int downlink_buffer_size; + // unsigned int downlink_buffer_size_temp; + static unsigned char TDMA_alloc_frame_raw[150]; + unsigned char rframe_length; + unsigned char loc_client_needs[radio_addr_table_size]; + unsigned char loc_master_needs; + unsigned char remaining_needs; + + for (i=0; i 0) ) { + TDMA_table_is_fast[i] = 1; + TDMA_table_uplink_usage[i]--; + } + } + //if ((TDMA_frame_nb & 0x7) == 0) { // once every 8 frames + if ((TDMA_frame_nb & 0x3) == 0) { // once every 4 frames + TDMA_master_allocation_slow(); + } + // ** TDMA allocation algorithm for fast slots ** + // 1) Master computes its own downlink buffer size + //downlink_buffer_size_temp = (TXPS_FIFO->last_ready - TXPS_FIFO->RD_point); + //downlink_buffer_size = downlink_buffer_size_temp / 300; //number of frames + //if ((downlink_buffer_size_temp % 300) > 0) {downlink_buffer_size++;} + downlink_buffer_size = compute_TX_buff_size_global(); + if (downlink_buffer_size > 30) {downlink_buffer_size = 30;} + // 2) if no TDMA uplink received from client, lower its need + for (i=0; i 0) ) { + TDMA_table_uplink_st[i]--; + } + TDMA_table_up2date[i] = 0; + } + // 3) init allocation table + // copy uplink state and allocate 1 slot to each active + // Master + loc_master_needs = downlink_buffer_size; // copy + master_allocated_slots = 1; + if (loc_master_needs>0) {loc_master_needs--;} // decrement + allocated_slots = 1; // at least 1 for master + // Clients + nb_fast_clients = 0; + for (i=0; i0) {loc_client_needs[i]--;} // decrement + allocated_slots++; + } + } + // 4) 1st allocation pass, round robin + remaining_needs = 1; + while ( (allocated_slots < 15) && (remaining_needs > 0) ) { + // master + if ( (loc_master_needs > 0) && (allocated_slots < 15) ) { + master_allocated_slots++; + loc_master_needs--; + allocated_slots++; + } + if ( (loc_master_needs > 0) && (allocated_slots < 15) && (nb_fast_clients > 1) ) {// master counts 2 times if more than 1 client + master_allocated_slots++; + loc_master_needs--; + allocated_slots++; + } + remaining_needs = loc_master_needs; + for (i=0; i0) && (allocated_slots < 15) ) { + TDMA_table_slots[i]++; + loc_client_needs[i]--; + allocated_slots++; + remaining_needs = remaining_needs + loc_client_needs[i]; + } + } + } + // 5) 2nd allocation pass, round robin of remaining, even without needs + while (allocated_slots < 15) { + master_allocated_slots++; + allocated_slots++; + for (i=0; i -2000) && (local_TA < 20000) ) { + TDMA_table_offset[i] = (loc_time_offset/10) - (local_TA/100); + } else { + TDMA_table_offset[i] = (loc_time_offset/10); + } + loc_time_offset = loc_time_offset + (TDMA_table_slots[i] * (CONF_TDMA_slot_duration + CONF_TDMA_slot_margin) ); + //printf("client %i %i %i ", i, TDMA_table_offset[i], TDMA_table_slots[i]*CONF_TDMA_slot_duration); + } + } + //printf("\r\n"); + //multi frame x4 + TDMA_offset_multi_frame = loc_time_offset / 10; + for (i=0; i<4; i++) { + if ( (CONF_radio_addr_table_status[i]) && (TDMA_table_is_fast[i]==0) ) { + local_TA = TDMA_table_TA[i]; + if ( (local_TA > -2000) && (local_TA < 20000) ) { + TDMA_table_offset[i] = TDMA_offset_multi_frame - (local_TA/100); + } else { + TDMA_table_offset[i] = TDMA_offset_multi_frame; + } + } + } + loc_time_offset = loc_time_offset + CONF_TDMA_slot_duration + CONF_TDMA_slot_margin; + TDMA_offset_multi_frame = loc_time_offset / 10; + for (i=4; i -2000) && (local_TA < 20000) ) { + TDMA_table_offset[i] = TDMA_offset_multi_frame - (local_TA/100); + } else { + TDMA_table_offset[i] = TDMA_offset_multi_frame; + } + } + } + + // ** TDMA allocation frame construction ** + TDMA_alloc_frame_raw[0] = 0xFF; // address = broadcast + TDMA_alloc_frame_raw[1] = 0x1F; // protocol = TDMA allocation + size_wo_FEC = 2; + for (i=0; i>8; // time offset MSB + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_table_slots[i] & 0xF); // TDMA slot length (4xLSb) and power (MSb) + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = 0; // ID multi frame (4xLSb) + size_wo_FEC++; + } else { // inside slow slot + TDMA_alloc_frame_raw[size_wo_FEC] = i; // client ID + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = TDMA_table_offset[i] & 0xFF; // time offset LSB + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_table_offset[i] & 0xFF00)>>8; // time offset MSB + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = 1; // TDMA slot length (4xLSb) and power (MSb) + size_wo_FEC++; + //TDMA_alloc_frame_raw[size_wo_FEC] = 0x30 + (i & 0x0F); //multi frame period (4xMSb) ID multi frame (4xLSb) + TDMA_alloc_frame_raw[size_wo_FEC] = 0x20 + (i & 0x03); //multi frame period (4xMSb) ID multi frame (4xLSb) + size_wo_FEC++; + } + } + } + //Discovery slot multi frame + TDMA_alloc_frame_raw[size_wo_FEC] = 0x7E; // client ID + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = TDMA_offset_multi_frame & 0xFF; // time offset LSB + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = (TDMA_offset_multi_frame & 0xFF00)>>8; // time offset MSB + size_wo_FEC++; + TDMA_alloc_frame_raw[size_wo_FEC] = 1; // TDMA slot length (4xLSb) and power (MSb) + size_wo_FEC++; + //TDMA_alloc_frame_raw[size_wo_FEC] = 0x37; //multi frame period=3 (4xMSb); ID multi frame=7 (4xLSb) + TDMA_alloc_frame_raw[size_wo_FEC] = 0x23; //multi frame period=2 (4xMSb); ID multi frame=7 (4xLSb) + size_wo_FEC++; + //END + TDMA_alloc_frame_raw[size_wo_FEC] = 0xFF; // used to detect end of TDMA frame + size_wo_FEC++; + if (size_wo_FEC < 66) { + size_wo_FEC = 66; + } + size_w_FEC = size_w_FEC_compute (size_wo_FEC); + rframe_length = size_w_FEC + 1 - SI4463_offset_size; - TX_TDMA_intern_data[0] = 0;//timer coarse, useless - TX_TDMA_intern_data[1] = rframe_length; - - size_w_FEC = FEC_encode2(TDMA_alloc_frame_raw, TX_TDMA_intern_data+3, size_wo_FEC); + TX_TDMA_intern_data[0] = 0;//timer coarse, useless + TX_TDMA_intern_data[1] = rframe_length; + + size_w_FEC = FEC_encode2(TDMA_alloc_frame_raw, TX_TDMA_intern_data+3, size_wo_FEC); } void TDMA_master_allocation_slow () { - int i; - for (i=0; idata[0] = 0; // timer, date for later use - TX_TDMA_intern_data[0] = 0; - //TX_signaling_TDMA->data[1] = rframe_length; // length - //TX_signaling_TDMA->WR_point = 3; - TX_TDMA_intern_data[1] = rframe_length; - //size_w_FEC = FEC_encode(null_frame, TX_signaling_TDMA, size_wo_FEC); - size_w_FEC = FEC_encode2(null_frame, TX_TDMA_intern_data+3, size_wo_FEC);//+3: timer, size, tdma - //TX_signaling_TDMA->last_ready = TX_signaling_TDMA->WR_point; + unsigned char null_frame[260]; + int size_wo_FEC, size_w_FEC; + unsigned char rframe_length; + null_frame[0] = my_radio_client_ID + parity_bit_elab[my_radio_client_ID]; // address = client + null_frame[1] = 0x00; // protocol = NULL frame + //size_wo_FEC = 70; + size_wo_FEC = size; + size_w_FEC = size_w_FEC_compute (size_wo_FEC); + rframe_length = size_w_FEC + 1 - SI4463_offset_size; + //TX_signaling_TDMA->data[0] = 0; // timer, date for later use + TX_TDMA_intern_data[0] = 0; + //TX_signaling_TDMA->data[1] = rframe_length; // length + //TX_signaling_TDMA->WR_point = 3; + TX_TDMA_intern_data[1] = rframe_length; + //size_w_FEC = FEC_encode(null_frame, TX_signaling_TDMA, size_wo_FEC); + size_w_FEC = FEC_encode2(null_frame, TX_TDMA_intern_data+3, size_wo_FEC);//+3: timer, size, tdma + //TX_signaling_TDMA->last_ready = TX_signaling_TDMA->WR_point; } void TDMA_slave_alloc_exploitation(unsigned char* unFECdata, int unFECsize) { - static unsigned char LUT_multif_mask[8] = {0,1,3,7,15,31}; - int i; - unsigned char loc_client_ID; - unsigned char loc_TDMA_slot_length; - // unsigned char loc_power; - unsigned long int loc_TDMA_offset; - i=2; //1st byte: client ID, 2nd byte:protocol - loc_client_ID = unFECdata[2]; - while ( (loc_client_ID != 0xFF) && (i < unFECsize) ) { - if (loc_client_ID == my_radio_client_ID) { - loc_TDMA_offset = ( unFECdata[i+1] + (unFECdata[i+2]<<8) )*10; - offset_time_TX_slave = loc_TDMA_offset; - //printf("offset:%i\r\n",loc_TDMA_offset); - loc_TDMA_slot_length = 0x0F & unFECdata[i+3]; - time_max_TX_burst = (loc_TDMA_slot_length * CONF_TDMA_slot_duration) + ( (loc_TDMA_slot_length-1) *CONF_TDMA_slot_margin ); - my_multiframe_ID = 0x0F & unFECdata[i+4]; - my_multiframe_mask = (0xF0 & unFECdata[i+4]) >> 4; - my_multiframe_mask = LUT_multif_mask[my_multiframe_mask]; - // loc_power = ( 0xF0 & unFECdata[i+3] ) >> 4; - //printf("TDMAf:"); - //for (j=0; j< 5; j++) { - // printf(" %02X", unFECdata[i+j]); - //} - //printf ("\r\n"); - //printf ("offs:%i length:%i multi_ID:%i multi_period:%i\r\n", offset_time_TX_slave, time_max_TX_burst, my_multiframe_ID, my_multiframe_period); - slave_alloc_RX_age = 0; - } - i=i+5; - loc_client_ID = unFECdata[i]; - } - - + static unsigned char LUT_multif_mask[8] = {0,1,3,7,15,31}; + int i; + unsigned char loc_client_ID; + unsigned char loc_TDMA_slot_length; + // unsigned char loc_power; + unsigned long int loc_TDMA_offset; + i=2; //1st byte: client ID, 2nd byte:protocol + loc_client_ID = unFECdata[2]; + while ( (loc_client_ID != 0xFF) && (i < unFECsize) ) { + if (loc_client_ID == my_radio_client_ID) { + loc_TDMA_offset = ( unFECdata[i+1] + (unFECdata[i+2]<<8) )*10; + offset_time_TX_slave = loc_TDMA_offset; + //printf("offset:%i\r\n",loc_TDMA_offset); + loc_TDMA_slot_length = 0x0F & unFECdata[i+3]; + time_max_TX_burst = (loc_TDMA_slot_length * CONF_TDMA_slot_duration) + ( (loc_TDMA_slot_length-1) *CONF_TDMA_slot_margin ); + my_multiframe_ID = 0x0F & unFECdata[i+4]; + my_multiframe_mask = (0xF0 & unFECdata[i+4]) >> 4; + my_multiframe_mask = LUT_multif_mask[my_multiframe_mask]; + // loc_power = ( 0xF0 & unFECdata[i+3] ) >> 4; + //printf("TDMAf:"); + //for (j=0; j< 5; j++) { + // printf(" %02X", unFECdata[i+j]); + //} + //printf ("\r\n"); + //printf ("offs:%i length:%i multi_ID:%i multi_period:%i\r\n", offset_time_TX_slave, time_max_TX_burst, my_multiframe_ID, my_multiframe_period); + slave_alloc_RX_age = 0; + } + i=i+5; + loc_client_ID = unFECdata[i]; + } + + } diff --git a/NPR_14/source/Virt_Chan.cpp b/NPR_14/source/Virt_Chan.cpp index d1f35f9..22b6b1e 100644 --- a/NPR_14/source/Virt_Chan.cpp +++ b/NPR_14/source/Virt_Chan.cpp @@ -2,25 +2,25 @@ #include "mbed.h" int RTP_gateway (W5500_chip* W5500) { - static unsigned char RX_data[1600]; - - static unsigned char IP_addr_1[6]={10,151,0,20}; - static unsigned char eth_peer[8]={0x00,0x13,0x3b,0x73,0x12,0xae}; - int RX_size=0; - int size_UDP; - int answer=0; - RX_size = W5500_read_received_size(W5500, 2); - if (RX_size > 0) { - answer = 1; - size_UDP = W5500_read_UDP_pckt(W5500, 2, RX_data); - - W5500_write_short(W5500, 0x0006, 0x09, eth_peer, 6); - W5500_write_short(W5500, 0x000C, 0x09, IP_addr_1, 4); - W5500_write_TX_buffer(W5500, 2, RX_data+8, size_UDP-8, 1); - + static unsigned char RX_data[1600]; + + static unsigned char IP_addr_1[6]={10,151,0,20}; + static unsigned char eth_peer[8]={0x00,0x13,0x3b,0x73,0x12,0xae}; + int RX_size=0; + int size_UDP; + int answer=0; + RX_size = W5500_read_received_size(W5500, 2); + if (RX_size > 0) { + answer = 1; + size_UDP = W5500_read_UDP_pckt(W5500, 2, RX_data); + + W5500_write_short(W5500, 0x0006, 0x09, eth_peer, 6); + W5500_write_short(W5500, 0x000C, 0x09, IP_addr_1, 4); + W5500_write_TX_buffer(W5500, 2, RX_data+8, size_UDP-8, 1); + - } - return answer; - + } + return answer; + } diff --git a/NPR_14/source/W5500.cpp b/NPR_14/source/W5500.cpp index 2285687..1a44f1f 100644 --- a/NPR_14/source/W5500.cpp +++ b/NPR_14/source/W5500.cpp @@ -23,37 +23,37 @@ void W5500_read_long(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char* RX_data, int RX_size) { unsigned char W5_command[20]; - unsigned char trash[20]; + unsigned char trash[20]; W5_command[0] = W5500_addr / 256; W5_command[1] = W5500_addr & 0xFF; W5_command[2] = (bloc_addr * 0x08); *(SPI_p_loc->cs)=0; - RX_data[0]=0; + RX_data[0]=0; - SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); + SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); - SPI_p_loc->spi_port->transfer_2 (trash, RX_size, RX_data, RX_size); + SPI_p_loc->spi_port->transfer_2 (trash, RX_size, RX_data, RX_size); wait_us(1); *(SPI_p_loc->cs)=1; - wait_us(2); + wait_us(2); } void W5500_write_long(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char* TX_data, int TX_size) { unsigned char W5_command[4]; - static unsigned char trash[1600]; - + static unsigned char trash[1600]; + W5_command[0] = W5500_addr / 256; W5_command[1] = W5500_addr & 0xFF; W5_command[2] = (bloc_addr * 0x08) + 4; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); - //wait_us(10); - - SPI_p_loc->spi_port->transfer_2 (TX_data, TX_size, trash, 0); - + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); + //wait_us(10); + + SPI_p_loc->spi_port->transfer_2 (TX_data, TX_size, trash, 0); + wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); + SPI_p_loc->cs->write(1); + wait_us(2); } void W5500_read_short(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char* RX_data_ext, int RX_size) { @@ -63,19 +63,19 @@ void W5500_read_short(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned c TX_data_loc[0] = W5500_addr / 256; TX_data_loc[1] = W5500_addr & 0xFF; TX_data_loc[2] = (bloc_addr * 0x08) ; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (TX_data_loc, RX_size+3, RX_data_loc, RX_size+3); + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (TX_data_loc, RX_size+3, RX_data_loc, RX_size+3); for (i=0; i < RX_size; i++) { RX_data_ext[i] = RX_data_loc[i+3]; } wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); + SPI_p_loc->cs->write(1); + wait_us(2); } void W5500_write_short(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char* TX_data_ext, int TX_size) { unsigned char TX_data_loc[10]; - unsigned char trash[10]; + unsigned char trash[10]; int i; TX_data_loc[0] = W5500_addr / 256; TX_data_loc[1] = W5500_addr & 0xFF; @@ -83,41 +83,41 @@ void W5500_write_short(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned for (i=0; i < TX_size; i++) { TX_data_loc[i+3] = TX_data_ext[i]; } - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (TX_data_loc, TX_size+3, trash, 0); - wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (TX_data_loc, TX_size+3, trash, 0); + wait_us(1); + SPI_p_loc->cs->write(1); + wait_us(2); } unsigned char W5500_read_byte(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr) { unsigned char TX_data_loc[20]; unsigned char RX_data_loc[20]; - unsigned char data_out; + unsigned char data_out; TX_data_loc[0] = W5500_addr / 256; TX_data_loc[1] = W5500_addr & 0xFF; TX_data_loc[2] = (bloc_addr * 0x08) ; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (TX_data_loc, 4, RX_data_loc, 4); + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (TX_data_loc, 4, RX_data_loc, 4); wait_us(1); - SPI_p_loc->cs->write(1); + SPI_p_loc->cs->write(1); data_out = RX_data_loc[3]; - return data_out; - wait_us(2); + return data_out; + wait_us(2); } void W5500_write_byte(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char data) { unsigned char TX_data_loc[10]; - unsigned char trash[10]; + unsigned char trash[10]; TX_data_loc[0] = W5500_addr / 256; TX_data_loc[1] = W5500_addr & 0xFF; TX_data_loc[2] = (bloc_addr * 0x08) + 4; TX_data_loc[3] = data; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (TX_data_loc, 4, trash, 0); - wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (TX_data_loc, 4, trash, 0); + wait_us(1); + SPI_p_loc->cs->write(1); + wait_us(2); } @@ -129,297 +129,297 @@ void W5500_Phy_off_2sec(W5500_chip* SPI_p_loc) { } int W5500_read_received_size(W5500_chip* SPI_p_loc, int sock_nb) { - int size=9999, previous_size=9999; - unsigned char data[10]; - do { - previous_size = size; - W5500_read_short(SPI_p_loc, 0x0026, (sock_nb*4)+1, data, 2); - size = data[1] + data[0]*256; - } while (previous_size != size); - - //printf("size:%d\r\n", size); - return size; + int size=9999, previous_size=9999; + unsigned char data[10]; + do { + previous_size = size; + W5500_read_short(SPI_p_loc, 0x0026, (sock_nb*4)+1, data, 2); + size = data[1] + data[0]*256; + } while (previous_size != size); + + //printf("size:%d\r\n", size); + return size; } int W5500_read_TX_free_size(W5500_chip* SPI_p_loc, int sock_nb) { - int size=9999, previous_size=9999; - unsigned char data[10]; - do { - previous_size = size; - W5500_read_short(SPI_p_loc, 0x0020, (sock_nb*4)+1, data, 2); - size = data[1] + data[0]*256; - } while (previous_size != size); - - //printf("size:%d\r\n", size); - return size; + int size=9999, previous_size=9999; + unsigned char data[10]; + do { + previous_size = size; + W5500_read_short(SPI_p_loc, 0x0020, (sock_nb*4)+1, data, 2); + size = data[1] + data[0]*256; + } while (previous_size != size); + + //printf("size:%d\r\n", size); + return size; } void W5500_read_RX_buffer(W5500_chip* SPI_p_loc, int sock_nb, unsigned char* data, int size) { - unsigned char read_pointer_raw[10]; - unsigned short read_pointer; - W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; - W5500_read_long(SPI_p_loc, read_pointer, (sock_nb*4)+3, data, size); - read_pointer = read_pointer + size ; - read_pointer_raw[0] = read_pointer / 256; - read_pointer_raw[1] = read_pointer & 0xFF; - W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40); + unsigned char read_pointer_raw[10]; + unsigned short read_pointer; + W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; + W5500_read_long(SPI_p_loc, read_pointer, (sock_nb*4)+3, data, size); + read_pointer = read_pointer + size ; + read_pointer_raw[0] = read_pointer / 256; + read_pointer_raw[1] = read_pointer & 0xFF; + W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40); } int W5500_read_UDP_pckt (W5500_chip* SPI_p_loc, int sock_nb, unsigned char* data) { - int size=0; - unsigned char read_pointer_raw[10]; - unsigned char trash[20]; - unsigned short read_pointer; - unsigned char W5_command[20]; - W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; - // read first 8 bytes - W5_command[0] = read_pointer_raw[0]; - W5_command[1] = read_pointer_raw[1]; - W5_command[2] = ((sock_nb*4)+3) * 0x08; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); - SPI_p_loc->spi_port->transfer_2 (trash, 8, data, 8); - size = data [7] + 256 * data[6]; - SPI_p_loc->spi_port->transfer_2 (trash, size, data+8, size); - - size = size + 8; - wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); - //printf ("size UDP:%d\r\n", size); - read_pointer = read_pointer + size ; - - read_pointer_raw[0] = read_pointer / 256; - read_pointer_raw[1] = read_pointer & 0xFF; - W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40);//command receive - return size; + int size=0; + unsigned char read_pointer_raw[10]; + unsigned char trash[20]; + unsigned short read_pointer; + unsigned char W5_command[20]; + W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; + // read first 8 bytes + W5_command[0] = read_pointer_raw[0]; + W5_command[1] = read_pointer_raw[1]; + W5_command[2] = ((sock_nb*4)+3) * 0x08; + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); + SPI_p_loc->spi_port->transfer_2 (trash, 8, data, 8); + size = data [7] + 256 * data[6]; + SPI_p_loc->spi_port->transfer_2 (trash, size, data+8, size); + + size = size + 8; + wait_us(1); + SPI_p_loc->cs->write(1); + wait_us(2); + //printf ("size UDP:%d\r\n", size); + read_pointer = read_pointer + size ; + + read_pointer_raw[0] = read_pointer / 256; + read_pointer_raw[1] = read_pointer & 0xFF; + W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40);//command receive + return size; } int W5500_read_MAC_pckt (W5500_chip* SPI_p_loc, int sock_nb, unsigned char* data) { - int size=0; - unsigned char read_pointer_raw[10]; - unsigned char trash[20]; - unsigned short read_pointer; - unsigned char W5_command[20]; - W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; - // read first 8 bytes - W5_command[0] = read_pointer_raw[0]; - W5_command[1] = read_pointer_raw[1]; - W5_command[2] = ((sock_nb*4)+3) * 0x08; - SPI_p_loc->cs->write(0); - SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); - SPI_p_loc->spi_port->transfer_2 (trash, 2, data, 2); - size = data [1] + 256 * data[0]; - SPI_p_loc->spi_port->transfer_2 (trash, size-2, data+2, size-2); - - wait_us(1); - SPI_p_loc->cs->write(1); - wait_us(2); - //printf ("size UDP:%d\r\n", size); - read_pointer = read_pointer + size ; - - read_pointer_raw[0] = read_pointer / 256; - read_pointer_raw[1] = read_pointer & 0xFF; - W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); - W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40); - return size; + int size=0; + unsigned char read_pointer_raw[10]; + unsigned char trash[20]; + unsigned short read_pointer; + unsigned char W5_command[20]; + W5500_read_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + read_pointer = read_pointer_raw[1] + read_pointer_raw[0] * 256; + // read first 8 bytes + W5_command[0] = read_pointer_raw[0]; + W5_command[1] = read_pointer_raw[1]; + W5_command[2] = ((sock_nb*4)+3) * 0x08; + SPI_p_loc->cs->write(0); + SPI_p_loc->spi_port->transfer_2 (W5_command, 3, trash, 3); + SPI_p_loc->spi_port->transfer_2 (trash, 2, data, 2); + size = data [1] + 256 * data[0]; + SPI_p_loc->spi_port->transfer_2 (trash, size-2, data+2, size-2); + + wait_us(1); + SPI_p_loc->cs->write(1); + wait_us(2); + //printf ("size UDP:%d\r\n", size); + read_pointer = read_pointer + size ; + + read_pointer_raw[0] = read_pointer / 256; + read_pointer_raw[1] = read_pointer & 0xFF; + W5500_write_short(SPI_p_loc, 0x0028, (sock_nb*4)+1, read_pointer_raw, 2); + W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x40); + return size; } void W5500_write_TX_buffer(W5500_chip* SPI_p_loc, int sock_nb, unsigned char* data, int size, int send_mac) { - unsigned char write_pointer_raw[10]; - unsigned short write_pointer; - W5500_read_short(SPI_p_loc, 0x0024, (sock_nb*4)+1, write_pointer_raw, 2); - write_pointer = write_pointer_raw[1] + write_pointer_raw[0] * 256; - W5500_write_long(SPI_p_loc, write_pointer, (sock_nb*4)+2, data, size); - write_pointer = write_pointer + size ; - write_pointer_raw[0] = write_pointer / 256; - write_pointer_raw[1] = write_pointer & 0xFF; - W5500_write_short(SPI_p_loc, 0x0024, (sock_nb*4)+1, write_pointer_raw, 2); - if (send_mac == 1) { - W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x21); - } else { - W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x20); - } + unsigned char write_pointer_raw[10]; + unsigned short write_pointer; + W5500_read_short(SPI_p_loc, 0x0024, (sock_nb*4)+1, write_pointer_raw, 2); + write_pointer = write_pointer_raw[1] + write_pointer_raw[0] * 256; + W5500_write_long(SPI_p_loc, write_pointer, (sock_nb*4)+2, data, size); + write_pointer = write_pointer + size ; + write_pointer_raw[0] = write_pointer / 256; + write_pointer_raw[1] = write_pointer & 0xFF; + W5500_write_short(SPI_p_loc, 0x0024, (sock_nb*4)+1, write_pointer_raw, 2); + if (send_mac == 1) { + W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x21); + } else { + W5500_write_byte(SPI_p_loc, 0x0001, (sock_nb*4)+1, 0x20); + } } -static int W5500_configured = 0; // 0 not yet configured - // 1 configured - // 2 waiting reconfigure - // 3 waiting reboot after reconfigure +static int W5500_configured = 0; // 0 not yet configured + // 1 configured + // 2 waiting reconfigure + // 3 waiting reboot after reconfigure void W5500_re_configure (void) { - W5500_configured = 2; - + W5500_configured = 2; + } void W5500_re_configure_gateway(W5500_chip* SPI_p_loc) { - unsigned char data[10]; - if ( (LAN_conf_applied.LAN_def_route_activ) && (is_telnet_routed) && (is_TDMA_master) ) { - IP_int2char (LAN_conf_applied.LAN_def_route, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway - } else { - IP_int2char (0x01010101, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); - } + unsigned char data[10]; + if ( (LAN_conf_applied.LAN_def_route_activ) && (is_telnet_routed) && (is_TDMA_master) ) { + IP_int2char (LAN_conf_applied.LAN_def_route, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway + } else { + IP_int2char (0x01010101, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); + } } void W5500_re_configure_periodic_call(W5500_chip* SPI_p_loc) { - unsigned char data[10]; - if (W5500_configured == 4) { // reboot - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xF8);//!!! 0xC8 0xF8 - W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0xC0);//!!! 0xC8 0xF8 - W5500_configured = 1; //configured - } - if (W5500_configured == 3) { //wait - W5500_configured = 4; - } - if (W5500_configured == 2) { //reconfigure - IP_int2char (LAN_conf_applied.LAN_modem_IP, data); - W5500_write_long(SPI_p_loc, 0x000F, 0x00, data, 4); // modem IP - IP_int2char (LAN_conf_applied.LAN_subnet_mask, data); - W5500_write_long(SPI_p_loc, 0x0005, 0x00, data, 4); // net mask - - if ( (LAN_conf_applied.LAN_def_route_activ) && (is_telnet_routed) && (is_TDMA_master) ) { - IP_int2char (LAN_conf_applied.LAN_def_route, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway - } else { - IP_int2char (0x01010101, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); - } - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0x78); // 0x48 0x78 - W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0x40); // 0x48 0x78 - W5500_configured = 3; //waiting reboot - } - + unsigned char data[10]; + if (W5500_configured == 4) { // reboot + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xF8);//!!! 0xC8 0xF8 + W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0xC0);//!!! 0xC8 0xF8 + W5500_configured = 1; //configured + } + if (W5500_configured == 3) { //wait + W5500_configured = 4; + } + if (W5500_configured == 2) { //reconfigure + IP_int2char (LAN_conf_applied.LAN_modem_IP, data); + W5500_write_long(SPI_p_loc, 0x000F, 0x00, data, 4); // modem IP + IP_int2char (LAN_conf_applied.LAN_subnet_mask, data); + W5500_write_long(SPI_p_loc, 0x0005, 0x00, data, 4); // net mask + + if ( (LAN_conf_applied.LAN_def_route_activ) && (is_telnet_routed) && (is_TDMA_master) ) { + IP_int2char (LAN_conf_applied.LAN_def_route, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway + } else { + IP_int2char (0x01010101, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); + } + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0x78); // 0x48 0x78 + W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0x40); // 0x48 0x78 + W5500_configured = 3; //waiting reboot + } + } void W5500_initial_configure(W5500_chip* SPI_p_loc) { // reset W5500_write_byte(SPI_p_loc, 0x0000, 0x00, 0x80);//0x90 - wait_ms(500); - W5500_write_byte(SPI_p_loc, 0x0000, 0x00, 0x00);//0x10 - //wait_ms(1600); - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC8); - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0x78);//48 78 for 10MB full duplex / 40 half duplex !!! - W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0x40);//48 78 for 10MB full duplex / 40 half duplex !!! - wait_ms(1600); - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xF8);//c8 F8 for 10MB full duplex / c0 half duplexc8 !!! - W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0xC0);//c8 F8 for 10MB full duplex / c0 half duplexc8 !!! - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC8); - //wait_ms(1600); + wait_ms(500); + W5500_write_byte(SPI_p_loc, 0x0000, 0x00, 0x00);//0x10 + //wait_ms(1600); + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC8); + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0x78);//48 78 for 10MB full duplex / 40 half duplex !!! + W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0x40);//48 78 for 10MB full duplex / 40 half duplex !!! + wait_ms(1600); + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xF8);//c8 F8 for 10MB full duplex / c0 half duplexc8 !!! + W5500_write_byte(SPI_p_loc, 0x002E, 0x00, (CONF_Eth_mode << 3) + 0xC0);//c8 F8 for 10MB full duplex / c0 half duplexc8 !!! + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC8); + //wait_ms(1600); - //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC0); + //W5500_write_byte(SPI_p_loc, 0x002E, 0x00, 0xC0); //IP & MAC config //unsigned char data[20]={0x00,0x2E,0x00,4,5,6, 10,151,20,254}; - //unsigned char data[20]={0x00,0x2E,0x00,4,5,6, 192,168,0,254}; - unsigned char data[20]={0x00,0x2E,0x00,4,5,6}; - //W5500_write_long(SPI_p_loc, 0x0009, 0x00, data, 6); // modem MAC - //W5500_write_long(SPI_p_loc, 0x0009, 0x00, LAN_conf_applied.modem_MAC, 6); // modem MAC - W5500_write_long(SPI_p_loc, 0x0009, 0x00, CONF_modem_MAC, 6); // modem MAC - IP_int2char (LAN_conf_applied.LAN_modem_IP, data); - W5500_write_long(SPI_p_loc, 0x000F, 0x00, data, 4); // modem IP - if ( (is_telnet_routed) && (is_TDMA_master) ) { - IP_int2char (LAN_conf_applied.LAN_def_route, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway - } else { - IP_int2char (0, data); - W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); - } - IP_int2char (LAN_conf_applied.LAN_subnet_mask, data); - W5500_write_long(SPI_p_loc, 0x0005, 0x00, data, 4); // net mask - + //unsigned char data[20]={0x00,0x2E,0x00,4,5,6, 192,168,0,254}; + unsigned char data[20]={0x00,0x2E,0x00,4,5,6}; + //W5500_write_long(SPI_p_loc, 0x0009, 0x00, data, 6); // modem MAC + //W5500_write_long(SPI_p_loc, 0x0009, 0x00, LAN_conf_applied.modem_MAC, 6); // modem MAC + W5500_write_long(SPI_p_loc, 0x0009, 0x00, CONF_modem_MAC, 6); // modem MAC + IP_int2char (LAN_conf_applied.LAN_modem_IP, data); + W5500_write_long(SPI_p_loc, 0x000F, 0x00, data, 4); // modem IP + if ( (is_telnet_routed) && (is_TDMA_master) ) { + IP_int2char (LAN_conf_applied.LAN_def_route, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); // gateway + } else { + IP_int2char (0, data); + W5500_write_long(SPI_p_loc, 0x0001, 0x00, data, 4); + } + IP_int2char (LAN_conf_applied.LAN_subnet_mask, data); + W5500_write_long(SPI_p_loc, 0x0005, 0x00, data, 4); // net mask + W5500_write_byte(SPI_p_loc, 0x0018, 0x00, 0x01);//sock interrupt mask - - // Socket Read buffer size - W5500_write_byte(SPI_p_loc, 0x001E, 0x01, 0x08); //0 macraw 08 - W5500_write_byte(SPI_p_loc, 0x001E, 0x05, 0x02); //1 telnet 02 - W5500_write_byte(SPI_p_loc, 0x001E, 0x09, 0x04); //2 RTP 04 - W5500_write_byte(SPI_p_loc, 0x001E, 0x0D, 0x02); //3 DHCP 02 - W5500_write_byte(SPI_p_loc, 0x001E, 0x11, 0x00); //4 - W5500_write_byte(SPI_p_loc, 0x001E, 0x15, 0x00); //5 - W5500_write_byte(SPI_p_loc, 0x001E, 0x19, 0x00); //6 - W5500_write_byte(SPI_p_loc, 0x001E, 0x1D, 0x00); //7 - - // Socket Write buffer size - W5500_write_byte(SPI_p_loc, 0x001F, 0x01, 0x04); //0 macraw - W5500_write_byte(SPI_p_loc, 0x001F, 0x05, 0x02); //1 telnet - W5500_write_byte(SPI_p_loc, 0x001F, 0x09, 0x04); //2 RTP - W5500_write_byte(SPI_p_loc, 0x001F, 0x0D, 0x02); //3 DHCP - W5500_write_byte(SPI_p_loc, 0x001F, 0x11, 0x02); //4 UDP_FDD - W5500_write_byte(SPI_p_loc, 0x001F, 0x15, 0x00); //5 - W5500_write_byte(SPI_p_loc, 0x001F, 0x19, 0x00); //6 - W5500_write_byte(SPI_p_loc, 0x001F, 0x1D, 0x00); //7 - - // Socket 0 MAC RAW for packet switching - W5500_write_byte(SPI_p_loc, 0x0000, 0x01, 0x34); //config B4 for classic - W5500_write_byte(SPI_p_loc, 0x002C, 0x01, 0x04); //Interrupt mask : RECV - wait_ms(10); - W5500_write_byte(SPI_p_loc, 0x0001, 0x01, 0x01); //open - + + // Socket Read buffer size + W5500_write_byte(SPI_p_loc, 0x001E, 0x01, 0x08); //0 macraw 08 + W5500_write_byte(SPI_p_loc, 0x001E, 0x05, 0x02); //1 telnet 02 + W5500_write_byte(SPI_p_loc, 0x001E, 0x09, 0x04); //2 RTP 04 + W5500_write_byte(SPI_p_loc, 0x001E, 0x0D, 0x02); //3 DHCP 02 + W5500_write_byte(SPI_p_loc, 0x001E, 0x11, 0x00); //4 + W5500_write_byte(SPI_p_loc, 0x001E, 0x15, 0x00); //5 + W5500_write_byte(SPI_p_loc, 0x001E, 0x19, 0x00); //6 + W5500_write_byte(SPI_p_loc, 0x001E, 0x1D, 0x00); //7 + + // Socket Write buffer size + W5500_write_byte(SPI_p_loc, 0x001F, 0x01, 0x04); //0 macraw + W5500_write_byte(SPI_p_loc, 0x001F, 0x05, 0x02); //1 telnet + W5500_write_byte(SPI_p_loc, 0x001F, 0x09, 0x04); //2 RTP + W5500_write_byte(SPI_p_loc, 0x001F, 0x0D, 0x02); //3 DHCP + W5500_write_byte(SPI_p_loc, 0x001F, 0x11, 0x02); //4 UDP_FDD + W5500_write_byte(SPI_p_loc, 0x001F, 0x15, 0x00); //5 + W5500_write_byte(SPI_p_loc, 0x001F, 0x19, 0x00); //6 + W5500_write_byte(SPI_p_loc, 0x001F, 0x1D, 0x00); //7 + + // Socket 0 MAC RAW for packet switching + W5500_write_byte(SPI_p_loc, 0x0000, 0x01, 0x34); //config B4 for classic + W5500_write_byte(SPI_p_loc, 0x002C, 0x01, 0x04); //Interrupt mask : RECV + wait_ms(10); + W5500_write_byte(SPI_p_loc, 0x0001, 0x01, 0x01); //open + // Socket 1 telnet W5500_write_byte(SPI_p_loc, 0x0000, 0x05, 0x01); //config wait_ms(10); data[0]=0x00; //port 0d23 data[1]=0x17; W5500_write_short(SPI_p_loc, 0x0004, 0x05, data, 2); //port 23 (0x17) - //W5500_write_byte(SPI_p_loc, 0x002C, 0x05, 0x00); //interrupt mask - - // Socket 2 RTP port 1519 - W5500_write_byte(SPI_p_loc, 0x0000, 0x09, 0x42); //config - wait_ms(10); - data[0]=0x05; //port 0d1519 + //W5500_write_byte(SPI_p_loc, 0x002C, 0x05, 0x00); //interrupt mask + + // Socket 2 RTP port 1519 + W5500_write_byte(SPI_p_loc, 0x0000, 0x09, 0x42); //config + wait_ms(10); + data[0]=0x05; //port 0d1519 data[1]=0xEF; - W5500_write_short(SPI_p_loc, 0x0004, 0x09, data, 2); //port rx 1519 - data[0]=0x05; //port 0d1516 + W5500_write_short(SPI_p_loc, 0x0004, 0x09, data, 2); //port rx 1519 + data[0]=0x05; //port 0d1516 data[1]=0xEC; - W5500_write_short(SPI_p_loc, 0x0010, 0x09, data, 2); //port tx 1516 - W5500_write_byte(SPI_p_loc, 0x0001, 0x09, 0x01); // open - data[0]=10; - data[1]=151; - data[2]=0; - data[3]=60; - W5500_write_short(SPI_p_loc, 0x000C, 0x09, data, 4); //IP destination 10.151.0.21 - - // Socket 3 DHCP server - W5500_write_byte(SPI_p_loc, 0x0000, 0x0D, 0x02); //config - wait_ms(10); - data[0]=0x00; //port 0d67 + W5500_write_short(SPI_p_loc, 0x0010, 0x09, data, 2); //port tx 1516 + W5500_write_byte(SPI_p_loc, 0x0001, 0x09, 0x01); // open + data[0]=10; + data[1]=151; + data[2]=0; + data[3]=60; + W5500_write_short(SPI_p_loc, 0x000C, 0x09, data, 4); //IP destination 10.151.0.21 + + // Socket 3 DHCP server + W5500_write_byte(SPI_p_loc, 0x0000, 0x0D, 0x02); //config + wait_ms(10); + data[0]=0x00; //port 0d67 data[1]=0x43; - W5500_write_short(SPI_p_loc, 0x0004, 0x0D, data, 2); //port rx 67 - data[0]=0x00; //port 0d68 + W5500_write_short(SPI_p_loc, 0x0004, 0x0D, data, 2); //port rx 67 + data[0]=0x00; //port 0d68 data[1]=0x44; - W5500_write_short(SPI_p_loc, 0x0010, 0x0D, data, 2); //port tx 68 - W5500_write_byte(SPI_p_loc, 0x0001, 0x0D, 0x01); // open - data[0]=255; - data[1]=255; - data[2]=255; - data[3]=255; - data[4]=255; - data[5]=255; - W5500_write_short(SPI_p_loc, 0x000C, 0x0D, data, 4); //IP destination 255.255.255.255 - W5500_write_short(SPI_p_loc, 0x0006, 0x0D, data, 6); - - // Socket 4 UDP_FDD - W5500_write_byte(SPI_p_loc, 0x0000, 0x11, 0x42); //config - wait_ms(10); - data[0]=0x1A; //port TX 0d6716 = 0x1A3E + W5500_write_short(SPI_p_loc, 0x0010, 0x0D, data, 2); //port tx 68 + W5500_write_byte(SPI_p_loc, 0x0001, 0x0D, 0x01); // open + data[0]=255; + data[1]=255; + data[2]=255; + data[3]=255; + data[4]=255; + data[5]=255; + W5500_write_short(SPI_p_loc, 0x000C, 0x0D, data, 4); //IP destination 255.255.255.255 + W5500_write_short(SPI_p_loc, 0x0006, 0x0D, data, 6); + + // Socket 4 UDP_FDD + W5500_write_byte(SPI_p_loc, 0x0000, 0x11, 0x42); //config + wait_ms(10); + data[0]=0x1A; //port TX 0d6716 = 0x1A3E data[1]=0x3E; - W5500_write_short(SPI_p_loc, 0x0004, 0x11, data, 2); - data[0]=0x1A; //port RX 0d6718 = 0x1A3C + W5500_write_short(SPI_p_loc, 0x0004, 0x11, data, 2); + data[0]=0x1A; //port RX 0d6718 = 0x1A3C data[1]=0x3C; - W5500_write_short(SPI_p_loc, 0x0010, 0x11, data, 2); - W5500_write_byte(SPI_p_loc, 0x0001, 0x11, 0x01); // open - IP_int2char (CONF_master_down_IP, data); - W5500_write_short(SPI_p_loc, 0x000C, 0x11, data, 4); - // Socket 5 - - // Socket 6 - - // Socket 7 - W5500_configured = 1; + W5500_write_short(SPI_p_loc, 0x0010, 0x11, data, 2); + W5500_write_byte(SPI_p_loc, 0x0001, 0x11, 0x01); // open + IP_int2char (CONF_master_down_IP, data); + W5500_write_short(SPI_p_loc, 0x000C, 0x11, data, 4); + // Socket 5 + + // Socket 6 + + // Socket 7 + W5500_configured = 1; } \ No newline at end of file diff --git a/NPR_14/source/W5500.h b/NPR_14/source/W5500.h index c614245..4b574fd 100644 --- a/NPR_14/source/W5500.h +++ b/NPR_14/source/W5500.h @@ -24,8 +24,8 @@ struct W5500_chip{ SPI_F4HDK* spi_port; DigitalOut* cs; - DigitalIn* interrupt; - unsigned char sock_interrupt; + DigitalIn* interrupt; + unsigned char sock_interrupt; }; void W5500_read_long(W5500_chip* SPI_p_loc, unsigned int W5500_addr, unsigned char bloc_addr, unsigned char* RX_data, int RX_size); diff --git a/NPR_14/source/config_flash.cpp b/NPR_14/source/config_flash.cpp index a680eba..61a5dff 100644 --- a/NPR_14/source/config_flash.cpp +++ b/NPR_14/source/config_flash.cpp @@ -27,109 +27,109 @@ static unsigned char raw_config_data[260]; static unsigned int config_index; unsigned int virt_EEPROM_read(unsigned char* out_data) { //reads 256 Bytes of virtual eeprom data - FlashIAP my_loc_flash; - unsigned char loc_index_char[6]; - unsigned int loc_index_int, highest_index_seen; - unsigned int loc_address; - int i; - my_loc_flash.init(); - highest_index_seen = 0; - //for (i=0; i<256; i++) { - for (i=0; i<64; i++) { - my_loc_flash.read(loc_index_char, NFPR_config_addr_begin+(i*256), 4); - loc_index_int = (loc_index_char[0] << 24) + (loc_index_char[1] << 16) + (loc_index_char[2] << 8) + loc_index_char[3]; - if ( (loc_index_int != 0xFFFFFFFF) && (loc_index_int > highest_index_seen) ) { - highest_index_seen = loc_index_int; - } - } - if (highest_index_seen != 0) { //valid entry found - //loc_address = NFPR_config_addr_begin + (highest_index_seen & 0xFF)*256; - loc_address = NFPR_config_addr_begin + (highest_index_seen & 0x3F)*256; - my_loc_flash.read(out_data, loc_address, 256); - } - my_loc_flash.deinit(); - return highest_index_seen; + FlashIAP my_loc_flash; + unsigned char loc_index_char[6]; + unsigned int loc_index_int, highest_index_seen; + unsigned int loc_address; + int i; + my_loc_flash.init(); + highest_index_seen = 0; + //for (i=0; i<256; i++) { + for (i=0; i<64; i++) { + my_loc_flash.read(loc_index_char, NFPR_config_addr_begin+(i*256), 4); + loc_index_int = (loc_index_char[0] << 24) + (loc_index_char[1] << 16) + (loc_index_char[2] << 8) + loc_index_char[3]; + if ( (loc_index_int != 0xFFFFFFFF) && (loc_index_int > highest_index_seen) ) { + highest_index_seen = loc_index_int; + } + } + if (highest_index_seen != 0) { //valid entry found + //loc_address = NFPR_config_addr_begin + (highest_index_seen & 0xFF)*256; + loc_address = NFPR_config_addr_begin + (highest_index_seen & 0x3F)*256; + my_loc_flash.read(out_data, loc_address, 256); + } + my_loc_flash.deinit(); + return highest_index_seen; } unsigned int virt_EEPROM_write(unsigned char* in_data, unsigned int previous_index) { - unsigned int new_index; - unsigned int loc_address; - FlashIAP my_loc_flash; - if (previous_index == 0) { - previous_index = 0xFF; //next index will be 0x100, errase first sector - } - new_index = previous_index + 1; - //loc_address = NFPR_config_addr_begin + (new_index & 0xFF)*256; //previous config 64kB - loc_address = NFPR_config_addr_begin + (new_index & 0x3F)*256; //previous config - my_loc_flash.init(); - if ((new_index & 7) == 0) { //new sector, errase sector - HMI_printf ("errase sector:%X\r\n", loc_address); - my_loc_flash.erase(loc_address, 2048); - } - // writes new index - in_data[0] = (new_index & 0xFF000000) >> 24; - in_data[1] = (new_index & 0xFF0000) >> 16; - in_data[2] = (new_index & 0xFF00) >> 8; - in_data[3] = new_index & 0xFF; - my_loc_flash.program(in_data, loc_address, 256); - HMI_printf("write success\r\n"); - my_loc_flash.deinit(); - return new_index; + unsigned int new_index; + unsigned int loc_address; + FlashIAP my_loc_flash; + if (previous_index == 0) { + previous_index = 0xFF; //next index will be 0x100, errase first sector + } + new_index = previous_index + 1; + //loc_address = NFPR_config_addr_begin + (new_index & 0xFF)*256; //previous config 64kB + loc_address = NFPR_config_addr_begin + (new_index & 0x3F)*256; //previous config + my_loc_flash.init(); + if ((new_index & 7) == 0) { //new sector, errase sector + HMI_printf ("errase sector:%X\r\n", loc_address); + my_loc_flash.erase(loc_address, 2048); + } + // writes new index + in_data[0] = (new_index & 0xFF000000) >> 24; + in_data[1] = (new_index & 0xFF0000) >> 16; + in_data[2] = (new_index & 0xFF00) >> 8; + in_data[3] = new_index & 0xFF; + my_loc_flash.program(in_data, loc_address, 256); + HMI_printf("write success\r\n"); + my_loc_flash.deinit(); + return new_index; } //void virt_EEPROM_debug_read(void) { -// int i; -// unsigned int loc_address; -// unsigned char loc_data[260]; -// FlashIAP my_loc_flash; -// my_loc_flash.init(); -// //for (i=0; i<256; i++) { -// for (i=0; i<64; i++) { -// //loc_address = NFPR_config_addr_begin + (i & 0xFF)*256; -// loc_address = NFPR_config_addr_begin + (i & 0x3F)*256; -// my_loc_flash.read(loc_data, loc_address, 256); -// HMI_printf("addr:%X data:%02X %02X %02X %02X %02X %02X %02X %02X\r\n", loc_address, loc_data[0], loc_data[1], loc_data[2], loc_data[3], loc_data[4], loc_data[5], loc_data[6], loc_data[7]); -// wait_ms(10); -// } -// my_loc_flash.deinit(); +// int i; +// unsigned int loc_address; +// unsigned char loc_data[260]; +// FlashIAP my_loc_flash; +// my_loc_flash.init(); +// //for (i=0; i<256; i++) { +// for (i=0; i<64; i++) { +// //loc_address = NFPR_config_addr_begin + (i & 0xFF)*256; +// loc_address = NFPR_config_addr_begin + (i & 0x3F)*256; +// my_loc_flash.read(loc_data, loc_address, 256); +// HMI_printf("addr:%X data:%02X %02X %02X %02X %02X %02X %02X %02X\r\n", loc_address, loc_data[0], loc_data[1], loc_data[2], loc_data[3], loc_data[4], loc_data[5], loc_data[6], loc_data[7]); +// wait_ms(10); +// } +// my_loc_flash.deinit(); //} void virt_EEPROM_errase_all(void) { - FlashIAP my_loc_flash; - my_loc_flash.init(); - //my_loc_flash.erase(NFPR_config_addr_begin, 0x10000); //previous config 64kB - my_loc_flash.erase(NFPR_config_addr_begin, 0x4000); //config 16kB - my_loc_flash.deinit(); + FlashIAP my_loc_flash; + my_loc_flash.init(); + //my_loc_flash.erase(NFPR_config_addr_begin, 0x10000); //previous config 64kB + my_loc_flash.erase(NFPR_config_addr_begin, 0x4000); //config 16kB + my_loc_flash.deinit(); } // higher level functions void NFPR_config_read(void) { - int i; - unsigned char default_config[260] = NFPR_default_config; - uint8_t random[2]; + int i; + unsigned char default_config[260] = NFPR_default_config; + uint8_t random[2]; - config_index = virt_EEPROM_read(raw_config_data); - if (config_index == 0) { //no previous config found - for (i=0; i<256; i++) { - raw_config_data[i] = default_config[i]; - } + config_index = virt_EEPROM_read(raw_config_data); + if (config_index == 0) { //no previous config found + for (i=0; i<256; i++) { + raw_config_data[i] = default_config[i]; + } - //MAC random 2 LSB values - NFPR_random_generator(random, sizeof(random)); - raw_config_data[58] = random[0]; - raw_config_data[59] = random[1]; - raw_config_data[5] = raw_config_data[58];//callsign 1st char - raw_config_data[6] = raw_config_data[59];//callsign 2nd char - config_index = virt_EEPROM_write (raw_config_data, config_index);//save the MAC - } - apply_config_from_raw_string(raw_config_data); - if (is_TDMA_master == 1) { - my_client_radio_connexion_state = 2; - } else { - my_client_radio_connexion_state = 1; - my_radio_client_ID = 0x7E; - } + //MAC random 2 LSB values + NFPR_random_generator(random, sizeof(random)); + raw_config_data[58] = random[0]; + raw_config_data[59] = random[1]; + raw_config_data[5] = raw_config_data[58];//callsign 1st char + raw_config_data[6] = raw_config_data[59];//callsign 2nd char + config_index = virt_EEPROM_write (raw_config_data, config_index);//save the MAC + } + apply_config_from_raw_string(raw_config_data); + if (is_TDMA_master == 1) { + my_client_radio_connexion_state = 2; + } else { + my_client_radio_connexion_state = 1; + my_radio_client_ID = 0x7E; + } } /** @@ -138,146 +138,146 @@ void NFPR_config_read(void) { * Returns `true` if the resulting data are random. */ bool NFPR_random_generator(uint8_t *rnd, size_t size) { - trng_t trng_obj; - size_t random_length = 0; + trng_t trng_obj; + size_t random_length = 0; - trng_init(&trng_obj); - trng_get_bytes(&trng_obj, rnd, size, &random_length); - trng_free(&trng_obj); + trng_init(&trng_obj); + trng_get_bytes(&trng_obj, rnd, size, &random_length); + trng_free(&trng_obj); - if(random_length == size) { - return true; - } + if(random_length == size) { + return true; + } - return false; + return false; } unsigned int NFPR_config_save(void) { - if ( (CONF_radio_my_callsign[0] == 0) || (CONF_radio_my_callsign[2] == 0) ) { - HMI_printf("ERROR : not yet configured\r\n"); - - } else { - write_config_to_raw_string(raw_config_data); - config_index = virt_EEPROM_write (raw_config_data, config_index); - } - return config_index; + if ( (CONF_radio_my_callsign[0] == 0) || (CONF_radio_my_callsign[2] == 0) ) { + HMI_printf("ERROR : not yet configured\r\n"); + + } else { + write_config_to_raw_string(raw_config_data); + config_index = virt_EEPROM_write (raw_config_data, config_index); + } + return config_index; } void apply_config_from_raw_string(unsigned char* data_r) { - int i; - unsigned char modul_temp; - is_TDMA_master = data_r[4]; - for (i=0; i<16; i++) { - CONF_radio_my_callsign[i] = data_r[5+i]; - } - CONF_radio_my_callsign[15] = 0; - is_telnet_active = data_r[21]; - modul_temp = (data_r[22] & 0x3F); - if ( ((modul_temp>=11)&&(modul_temp<=14)) || ((modul_temp>=20)&&(modul_temp<=24)) ) { - CONF_radio_modulation = modul_temp; - } else { - CONF_radio_modulation = 24; - } - CONF_frequency_band = (data_r[22] & 0xC0) >> 6; - //printf("freq_band:%X modul:%i\r\n", CONF_frequency_band, modul_temp); - CONF_radio_frequency = data_r[23]; - CONF_radio_network_ID = data_r[24]; - - //specific for clients - CONF_radio_static_IP_requested = data_r[25]; - CONF_radio_IP_size_requested = IP_char2int(data_r+26); - LAN_conf_saved.DHCP_server_active = data_r[30]; - LAN_conf_applied.DHCP_server_active = data_r[30]; - - //specific for master - LAN_conf_saved.LAN_modem_IP = IP_char2int(data_r+31); - LAN_conf_applied.LAN_modem_IP = IP_char2int(data_r+31); - LAN_conf_saved.LAN_subnet_mask = IP_char2int(data_r+35); - LAN_conf_applied.LAN_subnet_mask = IP_char2int(data_r+35); - CONF_radio_IP_size = IP_char2int(data_r+39); - LAN_conf_saved.LAN_DNS_activ = data_r[43]; - LAN_conf_applied.LAN_DNS_activ = data_r[43]; - LAN_conf_saved.LAN_DNS_value = IP_char2int(data_r+44); - LAN_conf_applied.LAN_DNS_value = IP_char2int(data_r+44); - LAN_conf_saved.LAN_def_route_activ = data_r[48]; - LAN_conf_applied.LAN_def_route_activ = data_r[48]; - LAN_conf_saved.LAN_def_route = IP_char2int(data_r+49); - LAN_conf_applied.LAN_def_route = IP_char2int(data_r+49); - CONF_radio_IP_start = IP_char2int(data_r+53); - is_telnet_routed = data_r[57]; - CONF_modem_MAC[0] = 0x4E;//N - CONF_modem_MAC[1] = 0x46;//F - CONF_modem_MAC[2] = 0x50;//P - CONF_modem_MAC[3] = 0x52;//R - CONF_modem_MAC[4] = data_r[58]; - CONF_modem_MAC[5] = data_r[59]; - CONF_radio_default_state_ON_OFF = data_r[60]; - CONF_radio_PA_PWR = data_r[61]; - - CONF_frequency_HD = ((data_r[64]) <<8 ) | data_r[65]; - if ( (CONF_frequency_HD == 0x0000) || (CONF_frequency_HD > FREQ_MAX_RAW) ) { - CONF_frequency_HD = CONF_DEF_FREQ; // force to default frequency - } - CONF_freq_shift = ((data_r[66]) <<8) | data_r[67]; - CONF_transmission_method = data_r[68]; - CONF_master_FDD = data_r[69]; - CONF_master_down_IP = IP_char2int(data_r+70); - if ((data_r[74] >= 0xF0) && (data_r[74] <= 0xF7)){ - CONF_Eth_mode = data_r[74] - 0xF0; - } - else { - CONF_Eth_mode = 0x07; - } - if (LAN_conf_applied.DHCP_server_active == 1) { - LAN_conf_applied.DHCP_range_start = CONF_radio_IP_start; - LAN_conf_applied.DHCP_range_size = CONF_radio_IP_size_requested; - - } - if ( (is_TDMA_master == 1) && (CONF_master_FDD == 1) ) { // FDD Master down - G_FDD_trig_pin->output(); - } - if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {// FDD master up - G_FDD_trig_IRQ->rise(&TDMA_FDD_up_top_measure); - } + int i; + unsigned char modul_temp; + is_TDMA_master = data_r[4]; + for (i=0; i<16; i++) { + CONF_radio_my_callsign[i] = data_r[5+i]; + } + CONF_radio_my_callsign[15] = 0; + is_telnet_active = data_r[21]; + modul_temp = (data_r[22] & 0x3F); + if ( ((modul_temp>=11)&&(modul_temp<=14)) || ((modul_temp>=20)&&(modul_temp<=24)) ) { + CONF_radio_modulation = modul_temp; + } else { + CONF_radio_modulation = 24; + } + CONF_frequency_band = (data_r[22] & 0xC0) >> 6; + //printf("freq_band:%X modul:%i\r\n", CONF_frequency_band, modul_temp); + CONF_radio_frequency = data_r[23]; + CONF_radio_network_ID = data_r[24]; + + //specific for clients + CONF_radio_static_IP_requested = data_r[25]; + CONF_radio_IP_size_requested = IP_char2int(data_r+26); + LAN_conf_saved.DHCP_server_active = data_r[30]; + LAN_conf_applied.DHCP_server_active = data_r[30]; + + //specific for master + LAN_conf_saved.LAN_modem_IP = IP_char2int(data_r+31); + LAN_conf_applied.LAN_modem_IP = IP_char2int(data_r+31); + LAN_conf_saved.LAN_subnet_mask = IP_char2int(data_r+35); + LAN_conf_applied.LAN_subnet_mask = IP_char2int(data_r+35); + CONF_radio_IP_size = IP_char2int(data_r+39); + LAN_conf_saved.LAN_DNS_activ = data_r[43]; + LAN_conf_applied.LAN_DNS_activ = data_r[43]; + LAN_conf_saved.LAN_DNS_value = IP_char2int(data_r+44); + LAN_conf_applied.LAN_DNS_value = IP_char2int(data_r+44); + LAN_conf_saved.LAN_def_route_activ = data_r[48]; + LAN_conf_applied.LAN_def_route_activ = data_r[48]; + LAN_conf_saved.LAN_def_route = IP_char2int(data_r+49); + LAN_conf_applied.LAN_def_route = IP_char2int(data_r+49); + CONF_radio_IP_start = IP_char2int(data_r+53); + is_telnet_routed = data_r[57]; + CONF_modem_MAC[0] = 0x4E;//N + CONF_modem_MAC[1] = 0x46;//F + CONF_modem_MAC[2] = 0x50;//P + CONF_modem_MAC[3] = 0x52;//R + CONF_modem_MAC[4] = data_r[58]; + CONF_modem_MAC[5] = data_r[59]; + CONF_radio_default_state_ON_OFF = data_r[60]; + CONF_radio_PA_PWR = data_r[61]; + + CONF_frequency_HD = ((data_r[64]) <<8 ) | data_r[65]; + if ( (CONF_frequency_HD == 0x0000) || (CONF_frequency_HD > FREQ_MAX_RAW) ) { + CONF_frequency_HD = CONF_DEF_FREQ; // force to default frequency + } + CONF_freq_shift = ((data_r[66]) <<8) | data_r[67]; + CONF_transmission_method = data_r[68]; + CONF_master_FDD = data_r[69]; + CONF_master_down_IP = IP_char2int(data_r+70); + if ((data_r[74] >= 0xF0) && (data_r[74] <= 0xF7)){ + CONF_Eth_mode = data_r[74] - 0xF0; + } + else { + CONF_Eth_mode = 0x07; + } + if (LAN_conf_applied.DHCP_server_active == 1) { + LAN_conf_applied.DHCP_range_start = CONF_radio_IP_start; + LAN_conf_applied.DHCP_range_size = CONF_radio_IP_size_requested; + + } + if ( (is_TDMA_master == 1) && (CONF_master_FDD == 1) ) { // FDD Master down + G_FDD_trig_pin->output(); + } + if ( (is_TDMA_master == 1) && (CONF_master_FDD == 2) ) {// FDD master up + G_FDD_trig_IRQ->rise(&TDMA_FDD_up_top_measure); + } } void write_config_to_raw_string (unsigned char* data_r) { - int i; - data_r[4] = is_TDMA_master; - for (i=0; i<16; i++) { - data_r[5+i] = CONF_radio_my_callsign[i]; - } - data_r[21] = is_telnet_active; - data_r[22] = ( (CONF_frequency_band << 6) & 0xC0) + (CONF_radio_modulation & 0x3F); - data_r[23] = CONF_radio_frequency; - data_r[24] = CONF_radio_network_ID; - - //specific for clients - data_r[25] = CONF_radio_static_IP_requested; - IP_int2char(CONF_radio_IP_size_requested, data_r+26); - data_r[30] = LAN_conf_saved.DHCP_server_active; - - //specific for master - IP_int2char(LAN_conf_saved.LAN_modem_IP, data_r+31); - IP_int2char(LAN_conf_saved.LAN_subnet_mask, data_r+35); - IP_int2char(CONF_radio_IP_size, data_r+39); - data_r[43] = LAN_conf_saved.LAN_DNS_activ; - IP_int2char(LAN_conf_saved.LAN_DNS_value, data_r+44); - data_r[48] = LAN_conf_saved.LAN_def_route_activ; - IP_int2char(LAN_conf_saved.LAN_def_route, data_r+49); - IP_int2char(CONF_radio_IP_start, data_r+53); - data_r[57] = is_telnet_routed; - data_r[58] = CONF_modem_MAC[4]; - data_r[59] = CONF_modem_MAC[5]; - data_r[60] = CONF_radio_default_state_ON_OFF; - data_r[61] = CONF_radio_PA_PWR; - - data_r[64] = (CONF_frequency_HD & 0xFF00)>>8; - data_r[65] = (CONF_frequency_HD & 0x00FF); - data_r[66] = (CONF_freq_shift & 0xFF00)>>8; - data_r[67] = (CONF_freq_shift & 0x00FF); - data_r[68] = CONF_transmission_method; - data_r[69] = CONF_master_FDD; - IP_int2char(CONF_master_down_IP, data_r+70); - data_r[74] = CONF_Eth_mode + 0xF0; + int i; + data_r[4] = is_TDMA_master; + for (i=0; i<16; i++) { + data_r[5+i] = CONF_radio_my_callsign[i]; + } + data_r[21] = is_telnet_active; + data_r[22] = ( (CONF_frequency_band << 6) & 0xC0) + (CONF_radio_modulation & 0x3F); + data_r[23] = CONF_radio_frequency; + data_r[24] = CONF_radio_network_ID; + + //specific for clients + data_r[25] = CONF_radio_static_IP_requested; + IP_int2char(CONF_radio_IP_size_requested, data_r+26); + data_r[30] = LAN_conf_saved.DHCP_server_active; + + //specific for master + IP_int2char(LAN_conf_saved.LAN_modem_IP, data_r+31); + IP_int2char(LAN_conf_saved.LAN_subnet_mask, data_r+35); + IP_int2char(CONF_radio_IP_size, data_r+39); + data_r[43] = LAN_conf_saved.LAN_DNS_activ; + IP_int2char(LAN_conf_saved.LAN_DNS_value, data_r+44); + data_r[48] = LAN_conf_saved.LAN_def_route_activ; + IP_int2char(LAN_conf_saved.LAN_def_route, data_r+49); + IP_int2char(CONF_radio_IP_start, data_r+53); + data_r[57] = is_telnet_routed; + data_r[58] = CONF_modem_MAC[4]; + data_r[59] = CONF_modem_MAC[5]; + data_r[60] = CONF_radio_default_state_ON_OFF; + data_r[61] = CONF_radio_PA_PWR; + + data_r[64] = (CONF_frequency_HD & 0xFF00)>>8; + data_r[65] = (CONF_frequency_HD & 0x00FF); + data_r[66] = (CONF_freq_shift & 0xFF00)>>8; + data_r[67] = (CONF_freq_shift & 0x00FF); + data_r[68] = CONF_transmission_method; + data_r[69] = CONF_master_FDD; + IP_int2char(CONF_master_down_IP, data_r+70); + data_r[74] = CONF_Eth_mode + 0xF0; } \ No newline at end of file diff --git a/NPR_14/source/config_flash.h b/NPR_14/source/config_flash.h index 5a91d52..e8ce09c 100644 --- a/NPR_14/source/config_flash.h +++ b/NPR_14/source/config_flash.h @@ -24,43 +24,43 @@ #define NFPR_config_addr_begin 0x0803C000 #define NFPR_default_config { \ - 0,0,0,0, /* index*/\ - 0, /* is_master*/\ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*callsign*/\ - 1, /* telnet_active*/\ - 24, /* modulation*/\ - 175, /* frequency (175 = 437MHz)*/\ - 0, /* radio_netw_ID*/\ - 0, /* client_static_IP*/\ - 0,0,0,1, /* client_req_size*/\ - 1, /* DHCP server active*/\ - 192,168,0,253, /* modem_IP*/\ - 255,255,255,0, /*netmask*/\ - 0,0,0,32, /* IP_size*/\ - 1, /* DNS_active*/\ - 9,9,9,9, /* DNS_value*/\ - 1, /* def_route_active*/\ - 192,168,0,1, /* def_route_val*/\ - 192,168,0,65, /*IP_begin*/\ - 1, /* telnet_routed*/\ - 0,0, /* MAC 2 LS bytes*/\ - 0, /* radio_on_at_start*/\ - 127, /* RF_power*/\ - 0,0, /* checksum*/\ - 66, 104, /* frequency MSB LSB 437.000*/\ - 00, 00, /* frequency shift MSB LSB 0*/\ - 0, /* transmission method 0=IP 1=Ethernet*/\ - 0, /* master_FDD 0=no 1=down 2=up*/\ - 192,168,0,252,/*master_FDD_down_IP*/\ - 7, /* CONF_Eth*/\ - 0,0,0,0,0,0,0,0,0,0,0,0,0, /*static client 0 24 entries*/\ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /*static client 7*/\ + 0,0,0,0, /* index*/\ + 0, /* is_master*/\ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*callsign*/\ + 1, /* telnet_active*/\ + 24, /* modulation*/\ + 175, /* frequency (175 = 437MHz)*/\ + 0, /* radio_netw_ID*/\ + 0, /* client_static_IP*/\ + 0,0,0,1, /* client_req_size*/\ + 1, /* DHCP server active*/\ + 192,168,0,253, /* modem_IP*/\ + 255,255,255,0, /*netmask*/\ + 0,0,0,32, /* IP_size*/\ + 1, /* DNS_active*/\ + 9,9,9,9, /* DNS_value*/\ + 1, /* def_route_active*/\ + 192,168,0,1, /* def_route_val*/\ + 192,168,0,65, /*IP_begin*/\ + 1, /* telnet_routed*/\ + 0,0, /* MAC 2 LS bytes*/\ + 0, /* radio_on_at_start*/\ + 127, /* RF_power*/\ + 0,0, /* checksum*/\ + 66, 104, /* frequency MSB LSB 437.000*/\ + 00, 00, /* frequency shift MSB LSB 0*/\ + 0, /* transmission method 0=IP 1=Ethernet*/\ + 0, /* master_FDD 0=no 1=down 2=up*/\ + 192,168,0,252,/*master_FDD_down_IP*/\ + 7, /* CONF_Eth*/\ + 0,0,0,0,0,0,0,0,0,0,0,0,0, /*static client 0 24 entries*/\ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /*static client 7*/\ } unsigned int virt_EEPROM_read(unsigned char* data); diff --git a/NPR_14/source/ext_SRAM2.cpp b/NPR_14/source/ext_SRAM2.cpp index 674f8b3..ff20984 100644 --- a/NPR_14/source/ext_SRAM2.cpp +++ b/NPR_14/source/ext_SRAM2.cpp @@ -32,215 +32,215 @@ static unsigned char extSRAM_FIFO_index_write[8];//write pointers of FIFO static unsigned char extSRAM_FIFO_filling[8]; void ext_SRAM_init(void) { - int i; - int j; - for (i=0; i<8; i++) { - extSRAM_FIFO_index_read[i] = 0; - extSRAM_FIFO_index_write[i] = 0; - extSRAM_FIFO_filling[i] = 0; - } - extSRAM_total_filling = 0; + int i; + int j; + for (i=0; i<8; i++) { + extSRAM_FIFO_index_read[i] = 0; + extSRAM_FIFO_index_write[i] = 0; + extSRAM_FIFO_filling[i] = 0; + } + extSRAM_total_filling = 0; } void ext_SRAM_set_mode(ext_SRAM_chip* loc_SPI) { - static unsigned char command[6] = {0x01, 0x40, 0x00, 0x00}; - loc_SPI->cs->write(0); - loc_SPI->spi_port->transfer_2 (command, 2, trash, 2); - loc_SPI->cs->write(1); + static unsigned char command[6] = {0x01, 0x40, 0x00, 0x00}; + loc_SPI->cs->write(0); + loc_SPI->spi_port->transfer_2 (command, 2, trash, 2); + loc_SPI->cs->write(1); } /* void ext_SRAM_read2(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size) { - static unsigned char command[6] = {0x03, 0x00, 0x00, 0x00}; - loc_SPI->cs->write(0); - command[3] = address & 0xFF; - command[2] = (address & 0xFF00) >> 8; - command[1] = (address & 0xFF0000) >> 16; - loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); - loc_SPI->spi_port->transfer_2 (trash, size, loc_data, size); - loc_SPI->cs->write(1); + static unsigned char command[6] = {0x03, 0x00, 0x00, 0x00}; + loc_SPI->cs->write(0); + command[3] = address & 0xFF; + command[2] = (address & 0xFF00) >> 8; + command[1] = (address & 0xFF0000) >> 16; + loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); + loc_SPI->spi_port->transfer_2 (trash, size, loc_data, size); + loc_SPI->cs->write(1); } */ void ext_SRAM_write(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size) { - //static unsigned char trash[350]; - static unsigned char command[6] = {0x02, 0x00, 0x00, 0x00}; - loc_SPI->cs->write(0); - command[3] = address & 0xFF; - command[2] = (address & 0xFF00) >> 8; - command[1] = (address & 0xFF0000) >> 16; - loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); - loc_SPI->spi_port->transfer_2 (loc_data, size, trash, size); - loc_SPI->cs->write(1); + //static unsigned char trash[350]; + static unsigned char command[6] = {0x02, 0x00, 0x00, 0x00}; + loc_SPI->cs->write(0); + command[3] = address & 0xFF; + command[2] = (address & 0xFF00) >> 8; + command[1] = (address & 0xFF0000) >> 16; + loc_SPI->spi_port->transfer_2 (command, 4, trash, 4); + loc_SPI->spi_port->transfer_2 (loc_data, size, trash, size); + loc_SPI->cs->write(1); } int extSRAM_testfreespace(int pkt_nb, unsigned char FIFO_index) { - int freespace_available = 1; - if ( (extSRAM_FIFO_filling[FIFO_index] + pkt_nb) > 94 ) { - freespace_available = 0; - } - if ( (extSRAM_total_filling + pkt_nb) > 374 ) { - freespace_available = 0; - } - return freespace_available; + int freespace_available = 1; + if ( (extSRAM_FIFO_filling[FIFO_index] + pkt_nb) > 94 ) { + freespace_available = 0; + } + if ( (extSRAM_total_filling + pkt_nb) > 374 ) { + freespace_available = 0; + } + return freespace_available; } void extSRAM_push(unsigned char* raw_data, int size, unsigned char FIFO_nb) { - unsigned short int i; - unsigned short int free_slot = 0xFFFF; - for (i=0; i<350; i++) { - if (extSRAM_filling[i] == 0) { - free_slot = i; - } - } - if (free_slot != 0xFFFF) { - extSRAM_filling[free_slot] = 1; - extSRAM_FIFOs[FIFO_nb][extSRAM_FIFO_index_write[FIFO_nb]] = free_slot; - extSRAM_FIFO_index_write[FIFO_nb] ++; - if (extSRAM_FIFO_index_write[FIFO_nb] > 93) { - extSRAM_FIFO_index_write[FIFO_nb] = 0; - } - extSRAM_total_filling ++; - extSRAM_FIFO_filling[FIFO_nb]++; - extSRAM_pkt_timer[free_slot] = raw_data[0]; - extSRAM_pkt_size[free_slot] = size; - ext_SRAM_write (SPI_SRAM_p, raw_data, free_slot*350, size); - } else { - printf("ERROR extSRAM push\r\n"); - } + unsigned short int i; + unsigned short int free_slot = 0xFFFF; + for (i=0; i<350; i++) { + if (extSRAM_filling[i] == 0) { + free_slot = i; + } + } + if (free_slot != 0xFFFF) { + extSRAM_filling[free_slot] = 1; + extSRAM_FIFOs[FIFO_nb][extSRAM_FIFO_index_write[FIFO_nb]] = free_slot; + extSRAM_FIFO_index_write[FIFO_nb] ++; + if (extSRAM_FIFO_index_write[FIFO_nb] > 93) { + extSRAM_FIFO_index_write[FIFO_nb] = 0; + } + extSRAM_total_filling ++; + extSRAM_FIFO_filling[FIFO_nb]++; + extSRAM_pkt_timer[free_slot] = raw_data[0]; + extSRAM_pkt_size[free_slot] = size; + ext_SRAM_write (SPI_SRAM_p, raw_data, free_slot*350, size); + } else { + printf("ERROR extSRAM push\r\n"); + } } void TXPS_FIFO_fill(unsigned char* loc_data, int size) { - int size_to_write; - if ( ( (TXPS_FIFO->WR_point & TXPS_FIFO->mask) + size) > TXPS_FIFO->mask) { // to big for 1 step - size_to_write = (TXPS_FIFO->mask + 1 - (TXPS_FIFO->WR_point & TXPS_FIFO->mask) ); - //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size_to_write, SI_trash, size_to_write); - memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size_to_write); - TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size_to_write; // should become ZERO - //second step - size_to_write = size - size_to_write; - //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size_to_write, SI_trash, size_to_write); - memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size_to_write); - TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size_to_write; - TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; - } else { //1 step is enough - //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size, SI_trash, size); - memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size); - TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size; - TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; - } + int size_to_write; + if ( ( (TXPS_FIFO->WR_point & TXPS_FIFO->mask) + size) > TXPS_FIFO->mask) { // to big for 1 step + size_to_write = (TXPS_FIFO->mask + 1 - (TXPS_FIFO->WR_point & TXPS_FIFO->mask) ); + //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size_to_write, SI_trash, size_to_write); + memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size_to_write); + TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size_to_write; // should become ZERO + //second step + size_to_write = size - size_to_write; + //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size_to_write, SI_trash, size_to_write); + memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size_to_write); + TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size_to_write; + TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; + } else { //1 step is enough + //G_SI4463->spi->transfer_2 (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), size, SI_trash, size); + memcpy (TXPS_FIFO->data + (TXPS_FIFO->WR_point & TXPS_FIFO->mask), loc_data, size); + TXPS_FIFO->WR_point = TXPS_FIFO->WR_point + size; + TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; + } } /* void ext_SRAM_periodic_call(void) { - int intern_FIFO_filling; - int ext_FIFO_filling; - intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; - ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; - while ( (ext_FIFO_filling > 0) && (intern_FIFO_filling <= 9) ) { - ext_SRAM_read(SPI_SRAM_p, TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], TX_buff_ext_RD_pointer*128, 128); - TX_buff_ext_RD_pointer++; - TX_buff_intern_WR_pointer++; - TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; - } + int intern_FIFO_filling; + int ext_FIFO_filling; + intern_FIFO_filling = TX_buff_intern_WR_pointer - TX_buff_intern_RD_pointer; + ext_FIFO_filling = TX_buff_ext_WR_pointer - TX_buff_ext_RD_pointer; + while ( (ext_FIFO_filling > 0) && (intern_FIFO_filling <= 9) ) { + ext_SRAM_read(SPI_SRAM_p, TX_buff_intern_FIFOdata[TX_buff_intern_WR_pointer % 128], TX_buff_ext_RD_pointer*128, 128); + TX_buff_ext_RD_pointer++; + TX_buff_intern_WR_pointer++; + TX_buff_intern_last_ready = TX_buff_intern_WR_pointer; + } } */ /* void ext_SRAM_periodic_call() { - static unsigned char current_buff; - unsigned char radio_pckt[360]; - unsigned char nb_buffer_treated = 0; - unsigned char frame_datation; - unsigned char loc_time_char; - unsigned int loc_time_int; - unsigned short int extSRAM_pointer; - int one_packet_ok = 0; - int switch_to_next_buff = 0; - int fifo_full; - int frame_size; - - nb_buffer_treated = 0; - loc_time_int = GLOBAL_timer.read_us(); - loc_time_char = (loc_time_int >> 16) & 0xFF; - //condition a rajouter sur buffer interne TXPS - if ((TXPS_FIFO->last_ready - TXPS_FIFO->RD_point) < 3740 ) { //16380 - 350 ; 3740 - fifo_full = 0; - } else { - fifo_full = 1; - } - //printf("FIFO full : %i\r\n", fifo_full); - while ( (nb_buffer_treated<8) && (one_packet_ok==0) && (fifo_full == 0) ) {//loop over all buffers - switch_to_next_buff = 0; - if (extSRAM_FIFO_filling[current_buff] > 0) {//data available in current buffer - extSRAM_pointer = extSRAM_FIFOs[current_buff][extSRAM_FIFO_index_read[current_buff]]; - frame_datation = extSRAM_pkt_timer[extSRAM_pointer]; - //frame_size = extSRAM_pkt_size[extSRAM_pointer] + 2 + SI4463_offset_size; - frame_size = extSRAM_pkt_size[extSRAM_pointer]; - if ( (loc_time_char - frame_datation) < CONF_Tx_rframe_timeout) {//frame ok - //printf("frame OK ext SRAM\r\n"); - ext_SRAM_read (SPI_SRAM_p, radio_pckt, extSRAM_pointer*350, frame_size); - radio_pckt[1] = frame_size - 2 - SI4463_offset_size;//-2 - TXPS_FIFO_fill (radio_pckt, frame_size); - switch_to_next_buff = 1; - one_packet_ok = 1; - } else {//old frame - switch_to_next_buff = 0; - } - extSRAM_filling[extSRAM_pointer] = 0; - extSRAM_FIFO_index_read[current_buff]++; - if (extSRAM_FIFO_index_read[current_buff] > 93) { - extSRAM_FIFO_index_read[current_buff] = 0; - } - extSRAM_FIFO_filling[current_buff]--; - extSRAM_total_filling--; - - } - else {//no data in the current buffer - switch_to_next_buff = 1; - } - if (switch_to_next_buff == 1) { - current_buff++; - if (current_buff>7) {current_buff = 0;} - nb_buffer_treated++; - } - } + static unsigned char current_buff; + unsigned char radio_pckt[360]; + unsigned char nb_buffer_treated = 0; + unsigned char frame_datation; + unsigned char loc_time_char; + unsigned int loc_time_int; + unsigned short int extSRAM_pointer; + int one_packet_ok = 0; + int switch_to_next_buff = 0; + int fifo_full; + int frame_size; + + nb_buffer_treated = 0; + loc_time_int = GLOBAL_timer.read_us(); + loc_time_char = (loc_time_int >> 16) & 0xFF; + //condition a rajouter sur buffer interne TXPS + if ((TXPS_FIFO->last_ready - TXPS_FIFO->RD_point) < 3740 ) { //16380 - 350 ; 3740 + fifo_full = 0; + } else { + fifo_full = 1; + } + //printf("FIFO full : %i\r\n", fifo_full); + while ( (nb_buffer_treated<8) && (one_packet_ok==0) && (fifo_full == 0) ) {//loop over all buffers + switch_to_next_buff = 0; + if (extSRAM_FIFO_filling[current_buff] > 0) {//data available in current buffer + extSRAM_pointer = extSRAM_FIFOs[current_buff][extSRAM_FIFO_index_read[current_buff]]; + frame_datation = extSRAM_pkt_timer[extSRAM_pointer]; + //frame_size = extSRAM_pkt_size[extSRAM_pointer] + 2 + SI4463_offset_size; + frame_size = extSRAM_pkt_size[extSRAM_pointer]; + if ( (loc_time_char - frame_datation) < CONF_Tx_rframe_timeout) {//frame ok + //printf("frame OK ext SRAM\r\n"); + ext_SRAM_read (SPI_SRAM_p, radio_pckt, extSRAM_pointer*350, frame_size); + radio_pckt[1] = frame_size - 2 - SI4463_offset_size;//-2 + TXPS_FIFO_fill (radio_pckt, frame_size); + switch_to_next_buff = 1; + one_packet_ok = 1; + } else {//old frame + switch_to_next_buff = 0; + } + extSRAM_filling[extSRAM_pointer] = 0; + extSRAM_FIFO_index_read[current_buff]++; + if (extSRAM_FIFO_index_read[current_buff] > 93) { + extSRAM_FIFO_index_read[current_buff] = 0; + } + extSRAM_FIFO_filling[current_buff]--; + extSRAM_total_filling--; + + } + else {//no data in the current buffer + switch_to_next_buff = 1; + } + if (switch_to_next_buff == 1) { + current_buff++; + if (current_buff>7) {current_buff = 0;} + nb_buffer_treated++; + } + } } */ void ext_SRAM_test(ext_SRAM_chip* loc_SPI) { - unsigned char test_table[400] = "bonjour!!"; - unsigned char test_table2[400]; - unsigned long int timer1; - unsigned long int timer2; - unsigned int loc_address; - int i, j; - printf("\r\nsram test begin\r\n"); - //loc_SPI->cs->write(1); - for (i=0; i<5000; i++) { - loc_address = 16 * i; - //wait_ms(1); - sprintf ((char*)test_table, "jourbon %i", i); - ext_SRAM_write(loc_SPI, test_table, loc_address, 20); - printf("write %i\r\n", i); - } - for (i=0; i<5000; i++) { - loc_address = 16 * i; - for (j=0; j<30; j++) { - test_table2[j] = 0; - } - //wait_ms(1); - ext_SRAM_read2(loc_SPI, test_table2, loc_address, 20); - test_table2[12] = 0; - printf ("read addr %i content '%s' \r\n", loc_address, test_table2); - } - timer1 = GLOBAL_timer.read_us(); - for (i=0; i<10; i++) { - memcpy(test_table2+i, test_table+i, 350); - } - timer2 = GLOBAL_timer.read_us(); - printf("temps memcpy 350 %i\r\n", timer2-timer1); + unsigned char test_table[400] = "bonjour!!"; + unsigned char test_table2[400]; + unsigned long int timer1; + unsigned long int timer2; + unsigned int loc_address; + int i, j; + printf("\r\nsram test begin\r\n"); + //loc_SPI->cs->write(1); + for (i=0; i<5000; i++) { + loc_address = 16 * i; + //wait_ms(1); + sprintf ((char*)test_table, "jourbon %i", i); + ext_SRAM_write(loc_SPI, test_table, loc_address, 20); + printf("write %i\r\n", i); + } + for (i=0; i<5000; i++) { + loc_address = 16 * i; + for (j=0; j<30; j++) { + test_table2[j] = 0; + } + //wait_ms(1); + ext_SRAM_read2(loc_SPI, test_table2, loc_address, 20); + test_table2[12] = 0; + printf ("read addr %i content '%s' \r\n", loc_address, test_table2); + } + timer1 = GLOBAL_timer.read_us(); + for (i=0; i<10; i++) { + memcpy(test_table2+i, test_table+i, 350); + } + timer2 = GLOBAL_timer.read_us(); + printf("temps memcpy 350 %i\r\n", timer2-timer1); } #endif \ No newline at end of file diff --git a/NPR_14/source/ext_SRAM2.h b/NPR_14/source/ext_SRAM2.h index 19be82e..99fc31e 100644 --- a/NPR_14/source/ext_SRAM2.h +++ b/NPR_14/source/ext_SRAM2.h @@ -33,7 +33,7 @@ void ext_SRAM_set_mode(ext_SRAM_chip* loc_SPI); //void ext_SRAM_read2(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size); void ext_SRAM_write(ext_SRAM_chip* loc_SPI, unsigned char* loc_data, unsigned int address, int size); - + int extSRAM_testfreespace(int pkt_nb, unsigned char FIFO_index); void extSRAM_push(unsigned char* raw_data, int size, unsigned char FIFO_nb); diff --git a/NPR_14/source/global_variables.cpp b/NPR_14/source/global_variables.cpp index 964e2bc..4cf5062 100644 --- a/NPR_14/source/global_variables.cpp +++ b/NPR_14/source/global_variables.cpp @@ -147,22 +147,22 @@ int G_uplink_bandwidth_temp; int super_debug = 0; unsigned char parity_bit_elab[128] = { - 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, - 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, - 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, - 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, - 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, - 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, - 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, - 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80 + 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, + 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, + 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, + 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, + 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80, + 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, + 0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00, + 0x80,0x00,0x00,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x80 }; unsigned char parity_bit_check[256] = { - 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, - 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, - 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, - 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, - 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, - 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, - 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, - 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1 + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1 }; diff --git a/NPR_14/source/global_variables.h b/NPR_14/source/global_variables.h index 9816f89..f87712e 100644 --- a/NPR_14/source/global_variables.h +++ b/NPR_14/source/global_variables.h @@ -28,20 +28,20 @@ extern ext_SRAM_chip* SPI_SRAM_p; #ifdef FREQ_BAND_2M - #define CONF_DEF_FREQ 1000 - #define FREQ_RANGE_MIN 144 - #define FREQ_RANGE_MAX 148 - #define FREQ_MAX_RAW 4000 - #define FREQ_BAND "2m" - #define SI4463_NOUTDIV 24 + #define CONF_DEF_FREQ 1000 + #define FREQ_RANGE_MIN 144 + #define FREQ_RANGE_MAX 148 + #define FREQ_MAX_RAW 4000 + #define FREQ_BAND "2m" + #define SI4463_NOUTDIV 24 #else - /*420 - 450MHz*/ - #define CONF_DEF_FREQ 17000 - #define FREQ_RANGE_MIN 420 - #define FREQ_RANGE_MAX 450 - #define FREQ_MAX_RAW 30000 - #define FREQ_BAND "70cm" - #define SI4463_NOUTDIV 8 + /*420 - 450MHz*/ + #define CONF_DEF_FREQ 17000 + #define FREQ_RANGE_MIN 420 + #define FREQ_RANGE_MAX 450 + #define FREQ_MAX_RAW 30000 + #define FREQ_BAND "70cm" + #define SI4463_NOUTDIV 8 #endif #define FW_VERSION "2025_03_29" @@ -145,17 +145,17 @@ extern Timer GLOBAL_timer; // *** ARP and DHCP and "routing" *** struct LAN_conf_T { - - //unsigned char modem_MAC[6]; - unsigned long int LAN_modem_IP; - unsigned long int DHCP_range_start; - unsigned long int DHCP_range_size; //4 - unsigned long int LAN_subnet_mask; - unsigned long int LAN_def_route; - unsigned char LAN_def_route_activ; - unsigned char LAN_DNS_activ; - unsigned long int LAN_DNS_value; - unsigned char DHCP_server_active; + + //unsigned char modem_MAC[6]; + unsigned long int LAN_modem_IP; + unsigned long int DHCP_range_start; + unsigned long int DHCP_range_size; //4 + unsigned long int LAN_subnet_mask; + unsigned long int LAN_def_route; + unsigned char LAN_def_route_activ; + unsigned char LAN_DNS_activ; + unsigned long int LAN_DNS_value; + unsigned char DHCP_server_active; }; extern LAN_conf_T LAN_conf_saved; diff --git a/NPR_14/source/signaling.cpp b/NPR_14/source/signaling.cpp index 09da1cd..dccd291 100644 --- a/NPR_14/source/signaling.cpp +++ b/NPR_14/source/signaling.cpp @@ -34,547 +34,547 @@ static int connect_state_machine_counter = 0; static int time_counter_last_ack = 0; void signaling_frame_exploitation (unsigned char* unFECdata, int unFECsize, int TA_input) { - int data_pos = 2; - unsigned char field_type; - unsigned char field_length; - unsigned char local_ID; - unsigned char* local_callsign; - unsigned long int local_IP_start; - unsigned long int local_IP_size; - unsigned char local_static_alloc; - unsigned char local_reason; - unsigned char local_RSSI; - unsigned short int local_BER; - short int local_TA; - //printf("signaling rx\r\n"); - do { - field_type = unFECdata[data_pos]; - field_length = unFECdata[data_pos+1]; - switch (field_type) { - case 0x01 : // WHOIS - local_ID = unFECdata[data_pos + 2]; - local_callsign = unFECdata + data_pos + 3; - local_callsign[15] = 0;//force null termination - local_IP_start = IP_char2int (unFECdata + data_pos + 19); - local_IP_size = IP_char2int (unFECdata + data_pos + 23); - local_RSSI = unFECdata[data_pos + 27]; - local_BER = unFECdata[data_pos + 28] + (unFECdata[data_pos + 29] << 8); - local_TA = unFECdata[data_pos + 30] + (unFECdata[data_pos + 31] << 8); - signaling_whois_interpret (local_ID, local_callsign, - local_IP_start, local_IP_size, - local_RSSI, local_BER, local_TA); - break; - case 0x05 : // request new connection - local_callsign = unFECdata + data_pos + 2; - local_callsign[15] = 0; - local_IP_size = IP_char2int (unFECdata + data_pos + 18); - local_static_alloc = unFECdata[data_pos + 22]; - if (is_TDMA_master) { - signaling_connect_req_process(local_callsign, local_IP_size, local_static_alloc, TA_input); - } - break; - case 0x06 : // ACK new connection - local_callsign = unFECdata + data_pos + 3; - local_callsign[15] = 0; - if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { - signaling_connect_ACK_process(unFECdata + data_pos + 2); - } - break; - case 0x07 : // NACK new connection - local_callsign = unFECdata + data_pos + 2; - local_callsign[15] = 0; - local_reason = unFECdata[data_pos + 18]; - if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { - signaling_connect_NACK_process(local_reason); - } - break; - case 0x0B : // Request disconnection - local_ID = unFECdata[data_pos + 2]; - local_callsign = unFECdata + data_pos + 3; - local_callsign[15] = 0; - if (is_TDMA_master) { - signaling_disconnect_req_process (local_ID, local_callsign); - } - break; - case 0x0C : // ACK disconnection - local_ID = unFECdata[data_pos + 2]; - local_callsign = unFECdata + data_pos + 3; - local_callsign[15] = 0; - if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { - signaling_disconnect_ACK_process (local_ID, local_callsign); - } - break; - } - data_pos = data_pos + field_length + 2; - - } while ( (field_type != 0xFF) && (data_pos < unFECsize ) ); - + int data_pos = 2; + unsigned char field_type; + unsigned char field_length; + unsigned char local_ID; + unsigned char* local_callsign; + unsigned long int local_IP_start; + unsigned long int local_IP_size; + unsigned char local_static_alloc; + unsigned char local_reason; + unsigned char local_RSSI; + unsigned short int local_BER; + short int local_TA; + //printf("signaling rx\r\n"); + do { + field_type = unFECdata[data_pos]; + field_length = unFECdata[data_pos+1]; + switch (field_type) { + case 0x01 : // WHOIS + local_ID = unFECdata[data_pos + 2]; + local_callsign = unFECdata + data_pos + 3; + local_callsign[15] = 0;//force null termination + local_IP_start = IP_char2int (unFECdata + data_pos + 19); + local_IP_size = IP_char2int (unFECdata + data_pos + 23); + local_RSSI = unFECdata[data_pos + 27]; + local_BER = unFECdata[data_pos + 28] + (unFECdata[data_pos + 29] << 8); + local_TA = unFECdata[data_pos + 30] + (unFECdata[data_pos + 31] << 8); + signaling_whois_interpret (local_ID, local_callsign, + local_IP_start, local_IP_size, + local_RSSI, local_BER, local_TA); + break; + case 0x05 : // request new connection + local_callsign = unFECdata + data_pos + 2; + local_callsign[15] = 0; + local_IP_size = IP_char2int (unFECdata + data_pos + 18); + local_static_alloc = unFECdata[data_pos + 22]; + if (is_TDMA_master) { + signaling_connect_req_process(local_callsign, local_IP_size, local_static_alloc, TA_input); + } + break; + case 0x06 : // ACK new connection + local_callsign = unFECdata + data_pos + 3; + local_callsign[15] = 0; + if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { + signaling_connect_ACK_process(unFECdata + data_pos + 2); + } + break; + case 0x07 : // NACK new connection + local_callsign = unFECdata + data_pos + 2; + local_callsign[15] = 0; + local_reason = unFECdata[data_pos + 18]; + if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { + signaling_connect_NACK_process(local_reason); + } + break; + case 0x0B : // Request disconnection + local_ID = unFECdata[data_pos + 2]; + local_callsign = unFECdata + data_pos + 3; + local_callsign[15] = 0; + if (is_TDMA_master) { + signaling_disconnect_req_process (local_ID, local_callsign); + } + break; + case 0x0C : // ACK disconnection + local_ID = unFECdata[data_pos + 2]; + local_callsign = unFECdata + data_pos + 3; + local_callsign[15] = 0; + if ( (is_TDMA_master == 0) && (strcmp ((char*)local_callsign, CONF_radio_my_callsign) == 0) ) { + signaling_disconnect_ACK_process (local_ID, local_callsign); + } + break; + } + data_pos = data_pos + field_length + 2; + + } while ( (field_type != 0xFF) && (data_pos < unFECsize ) ); + } void signaling_whois_interpret(unsigned char loc_ID, unsigned char* loc_callsign, - unsigned long int loc_IP_start, unsigned long int loc_IP_size, - unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc) { - unsigned char IP_start_c[5]; - - IP_int2char (loc_IP_start, IP_start_c); - //printf("WHOIS ID:%i CALL:%s IP_start %i.%i.%i.%i IP_size %i\r\n", loc_ID, (char*)loc_callsign, - // IP_start_c[0], IP_start_c[1], IP_start_c[2], IP_start_c[3], loc_IP_size); - if (is_TDMA_master == 0) { //only useful for slaves - if (loc_ID == 0x7F) { //who entry for master - strcpy (CONF_radio_master_callsign, (char*)loc_callsign); - } - else if (loc_ID < radio_addr_table_size) { - CONF_radio_addr_table_date[loc_ID] = GLOBAL_timer.read_us(); - CONF_radio_addr_table_status[loc_ID] = 2; // - strcpy (CONF_radio_addr_table_callsign[loc_ID], (char*)loc_callsign); - CONF_radio_addr_table_IP_begin[loc_ID] = loc_IP_start; - CONF_radio_addr_table_IP_size[loc_ID] = loc_IP_size; - G_radio_addr_table_RSSI[loc_ID] = RSSI_loc; - G_radio_addr_table_BER[loc_ID] = BER_loc; - TDMA_table_TA[loc_ID] = TA_loc; - } - } + unsigned long int loc_IP_start, unsigned long int loc_IP_size, + unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc) { + unsigned char IP_start_c[5]; + + IP_int2char (loc_IP_start, IP_start_c); + //printf("WHOIS ID:%i CALL:%s IP_start %i.%i.%i.%i IP_size %i\r\n", loc_ID, (char*)loc_callsign, + // IP_start_c[0], IP_start_c[1], IP_start_c[2], IP_start_c[3], loc_IP_size); + if (is_TDMA_master == 0) { //only useful for slaves + if (loc_ID == 0x7F) { //who entry for master + strcpy (CONF_radio_master_callsign, (char*)loc_callsign); + } + else if (loc_ID < radio_addr_table_size) { + CONF_radio_addr_table_date[loc_ID] = GLOBAL_timer.read_us(); + CONF_radio_addr_table_status[loc_ID] = 2; // + strcpy (CONF_radio_addr_table_callsign[loc_ID], (char*)loc_callsign); + CONF_radio_addr_table_IP_begin[loc_ID] = loc_IP_start; + CONF_radio_addr_table_IP_size[loc_ID] = loc_IP_size; + G_radio_addr_table_RSSI[loc_ID] = RSSI_loc; + G_radio_addr_table_BER[loc_ID] = BER_loc; + TDMA_table_TA[loc_ID] = TA_loc; + } + } } unsigned long int signaling_lookfor_IP_range(unsigned long int req_size) { - int i, j; - unsigned long int answer = 0xFFFFFFFF; - unsigned long int current_tested_pos; - unsigned long int next_alloc_IP; - - current_tested_pos = CONF_radio_IP_start; - next_alloc_IP = CONF_radio_IP_start + CONF_radio_IP_size; - for (j=0; j= current_tested_pos) && (CONF_radio_addr_table_IP_begin[j] < next_alloc_IP) ) { - next_alloc_IP = CONF_radio_addr_table_IP_begin[j]; - } - } - if ( (next_alloc_IP - current_tested_pos) >= req_size) { - answer = current_tested_pos; - } - - for (i=0; i= current_tested_pos) && (CONF_radio_addr_table_IP_begin[j] < next_alloc_IP) ) { - next_alloc_IP = CONF_radio_addr_table_IP_begin[j]; - } - } - if ( (next_alloc_IP - current_tested_pos) >= req_size) { - answer = current_tested_pos; - } - } - } - - } - return answer; + int i, j; + unsigned long int answer = 0xFFFFFFFF; + unsigned long int current_tested_pos; + unsigned long int next_alloc_IP; + + current_tested_pos = CONF_radio_IP_start; + next_alloc_IP = CONF_radio_IP_start + CONF_radio_IP_size; + for (j=0; j= current_tested_pos) && (CONF_radio_addr_table_IP_begin[j] < next_alloc_IP) ) { + next_alloc_IP = CONF_radio_addr_table_IP_begin[j]; + } + } + if ( (next_alloc_IP - current_tested_pos) >= req_size) { + answer = current_tested_pos; + } + + for (i=0; i= current_tested_pos) && (CONF_radio_addr_table_IP_begin[j] < next_alloc_IP) ) { + next_alloc_IP = CONF_radio_addr_table_IP_begin[j]; + } + } + if ( (next_alloc_IP - current_tested_pos) >= req_size) { + answer = current_tested_pos; + } + } + } + + } + return answer; } void signaling_connect_req_process (unsigned char* client_callsign, unsigned long int req_IP_size, unsigned char req_static_alloc, int TA_input) { - int loc_ack = 0; - int i; - int existing_entry = -1; - unsigned char client_ID = 0xFF; - static unsigned char raw_answer[60]; - unsigned char NACK_reason; - unsigned long int proposed_IP; - unsigned char previous_status; - - // 1) look for existing entry for this callsign - for (i=0; i=0; i--) { - if (CONF_radio_addr_table_status[i] <= 0) { - client_ID = i; - //printf("client ID search %i\r\n", client_ID); - } - } - if (client_ID == 0xFF) { - NACK_reason = 0x03; //max nb of clients reached - loc_ack = 0; - } else { - proposed_IP = signaling_lookfor_IP_range (req_IP_size); - if (proposed_IP != 0xFFFFFFFF) {// IP valid found - CONF_radio_addr_table_status[client_ID] = 1; - CONF_radio_addr_table_IP_begin[client_ID] = proposed_IP; - CONF_radio_addr_table_IP_size[client_ID] = req_IP_size; - strcpy (CONF_radio_addr_table_callsign[client_ID], (char*)client_callsign); - CONF_radio_addr_table_date[client_ID] = GLOBAL_timer.read_us(); - TDMA_init_TA(client_ID, TA_input); - loc_ack = 1; - //printf("new, alloc OK\r\n"); - } else { //no IP found - NACK_reason = 0x02; - loc_ack = 0; - //printf("new, no more IP\r\n"); - } - } - } - // 3)send answer to client - if (loc_ack == 1) { // ACK - raw_answer[0] = 0x06; //signaling type = connection acknowledge - raw_answer[1] = 59; //size - raw_answer[2] = client_ID; - strcpy ((char*)(raw_answer + 3), (char*)client_callsign); // Client Callsign - IP_int2char (CONF_radio_addr_table_IP_begin[client_ID], raw_answer + 19); // IP start - IP_int2char (CONF_radio_addr_table_IP_size[client_ID], raw_answer + 23); // IP size - strcpy ((char*)(raw_answer + 27), CONF_radio_my_callsign); // Master callsign - IP_int2char (LAN_conf_applied.LAN_modem_IP, raw_answer + 43); // Modem IP - IP_int2char (LAN_conf_applied.LAN_subnet_mask, raw_answer + 47); // IP subnet mask - raw_answer[51] = LAN_conf_applied.LAN_def_route_activ; // active default route - IP_int2char (LAN_conf_applied.LAN_def_route, raw_answer + 52); // Default Route value - raw_answer[56] = LAN_conf_applied.LAN_DNS_activ; // Active DNS - IP_int2char (LAN_conf_applied.LAN_DNS_value, raw_answer + 57); // DNS value - signaling_TX_add_entry (raw_answer, 61); - signaling_frame_push(); - //printf("\r\n ACK sent\r\n\r\n"); - } - else { // NACK - raw_answer[0] = 0x07; //signaling type = connection NACK - raw_answer[1] = 33; //size - strcpy ((char*)(raw_answer + 2), (char*)client_callsign); - raw_answer[18] = NACK_reason; - strcpy ((char*)(raw_answer + 19), CONF_radio_my_callsign); // Master callsign; - signaling_TX_add_entry (raw_answer, 35); - signaling_frame_push(); - //printf("\r\n NACK sent\r\n\r\n"); - } + int loc_ack = 0; + int i; + int existing_entry = -1; + unsigned char client_ID = 0xFF; + static unsigned char raw_answer[60]; + unsigned char NACK_reason; + unsigned long int proposed_IP; + unsigned char previous_status; + + // 1) look for existing entry for this callsign + for (i=0; i=0; i--) { + if (CONF_radio_addr_table_status[i] <= 0) { + client_ID = i; + //printf("client ID search %i\r\n", client_ID); + } + } + if (client_ID == 0xFF) { + NACK_reason = 0x03; //max nb of clients reached + loc_ack = 0; + } else { + proposed_IP = signaling_lookfor_IP_range (req_IP_size); + if (proposed_IP != 0xFFFFFFFF) {// IP valid found + CONF_radio_addr_table_status[client_ID] = 1; + CONF_radio_addr_table_IP_begin[client_ID] = proposed_IP; + CONF_radio_addr_table_IP_size[client_ID] = req_IP_size; + strcpy (CONF_radio_addr_table_callsign[client_ID], (char*)client_callsign); + CONF_radio_addr_table_date[client_ID] = GLOBAL_timer.read_us(); + TDMA_init_TA(client_ID, TA_input); + loc_ack = 1; + //printf("new, alloc OK\r\n"); + } else { //no IP found + NACK_reason = 0x02; + loc_ack = 0; + //printf("new, no more IP\r\n"); + } + } + } + // 3)send answer to client + if (loc_ack == 1) { // ACK + raw_answer[0] = 0x06; //signaling type = connection acknowledge + raw_answer[1] = 59; //size + raw_answer[2] = client_ID; + strcpy ((char*)(raw_answer + 3), (char*)client_callsign); // Client Callsign + IP_int2char (CONF_radio_addr_table_IP_begin[client_ID], raw_answer + 19); // IP start + IP_int2char (CONF_radio_addr_table_IP_size[client_ID], raw_answer + 23); // IP size + strcpy ((char*)(raw_answer + 27), CONF_radio_my_callsign); // Master callsign + IP_int2char (LAN_conf_applied.LAN_modem_IP, raw_answer + 43); // Modem IP + IP_int2char (LAN_conf_applied.LAN_subnet_mask, raw_answer + 47); // IP subnet mask + raw_answer[51] = LAN_conf_applied.LAN_def_route_activ; // active default route + IP_int2char (LAN_conf_applied.LAN_def_route, raw_answer + 52); // Default Route value + raw_answer[56] = LAN_conf_applied.LAN_DNS_activ; // Active DNS + IP_int2char (LAN_conf_applied.LAN_DNS_value, raw_answer + 57); // DNS value + signaling_TX_add_entry (raw_answer, 61); + signaling_frame_push(); + //printf("\r\n ACK sent\r\n\r\n"); + } + else { // NACK + raw_answer[0] = 0x07; //signaling type = connection NACK + raw_answer[1] = 33; //size + strcpy ((char*)(raw_answer + 2), (char*)client_callsign); + raw_answer[18] = NACK_reason; + strcpy ((char*)(raw_answer + 19), CONF_radio_my_callsign); // Master callsign; + signaling_TX_add_entry (raw_answer, 35); + signaling_frame_push(); + //printf("\r\n NACK sent\r\n\r\n"); + } } void signaling_connect_ACK_process(unsigned char* raw_data) { - unsigned char local_client_ID; - unsigned long int local_IP_start; - unsigned long int local_IP_size; - unsigned long int local_modem_IP; - unsigned long int local_IP_subnet; - unsigned char local_default_route_activ; - unsigned long int local_default_route; - unsigned char local_DNS_activ; - unsigned long int local_DNS_value; - - int need_LAN_reset = 0; - //Client ID - local_client_ID = raw_data[0]; - my_radio_client_ID = local_client_ID; - TDMA_NULL_frame_init(70); - // IP Start - local_IP_start = IP_char2int(raw_data + 17); - if (local_IP_start != LAN_conf_applied.DHCP_range_start) {need_LAN_reset = 1;} - LAN_conf_applied.DHCP_range_start = local_IP_start; - // IP Size - local_IP_size = IP_char2int(raw_data + 21); - if (local_IP_size != LAN_conf_applied.DHCP_range_size) {need_LAN_reset = 1;} - LAN_conf_applied.DHCP_range_size = local_IP_size; - // Master Callsign - strcpy(CONF_radio_master_callsign, (char*)(raw_data + 25)); - // Modem IP - local_modem_IP = IP_char2int(raw_data + 41); - if (local_modem_IP != LAN_conf_applied.LAN_modem_IP) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_modem_IP = local_modem_IP; - // IP subnet mask - local_IP_subnet = IP_char2int(raw_data + 45); - if (local_IP_subnet != LAN_conf_applied.LAN_subnet_mask) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_subnet_mask = local_IP_subnet; - // Default route active - local_default_route_activ = raw_data[49]; - if (local_default_route_activ != LAN_conf_applied.LAN_def_route_activ) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_def_route_activ = local_default_route_activ; - // Default route value - local_default_route = IP_char2int(raw_data + 50); - if (local_default_route != LAN_conf_applied.LAN_def_route) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_def_route = local_default_route; - // DNS active - local_DNS_activ = raw_data[54]; - if (local_DNS_activ != LAN_conf_applied.LAN_DNS_activ) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_DNS_activ = local_DNS_activ; - // DNS value - local_DNS_value = IP_char2int(raw_data + 55); - if (local_DNS_value != LAN_conf_applied.LAN_DNS_value) {need_LAN_reset = 1;} - LAN_conf_applied.LAN_DNS_value = local_DNS_value; - - if (need_LAN_reset) { - HMI_force_exit(); - reset_DHCP_table(&LAN_conf_applied); - W5500_re_configure(); - need_LAN_reset = 0; - } - my_client_radio_connexion_state = 2; - connect_state_machine_counter = 0; - time_counter_last_ack = 0; - //printf("\r\n REQ ACK Received\r\n\r\n"); + unsigned char local_client_ID; + unsigned long int local_IP_start; + unsigned long int local_IP_size; + unsigned long int local_modem_IP; + unsigned long int local_IP_subnet; + unsigned char local_default_route_activ; + unsigned long int local_default_route; + unsigned char local_DNS_activ; + unsigned long int local_DNS_value; + + int need_LAN_reset = 0; + //Client ID + local_client_ID = raw_data[0]; + my_radio_client_ID = local_client_ID; + TDMA_NULL_frame_init(70); + // IP Start + local_IP_start = IP_char2int(raw_data + 17); + if (local_IP_start != LAN_conf_applied.DHCP_range_start) {need_LAN_reset = 1;} + LAN_conf_applied.DHCP_range_start = local_IP_start; + // IP Size + local_IP_size = IP_char2int(raw_data + 21); + if (local_IP_size != LAN_conf_applied.DHCP_range_size) {need_LAN_reset = 1;} + LAN_conf_applied.DHCP_range_size = local_IP_size; + // Master Callsign + strcpy(CONF_radio_master_callsign, (char*)(raw_data + 25)); + // Modem IP + local_modem_IP = IP_char2int(raw_data + 41); + if (local_modem_IP != LAN_conf_applied.LAN_modem_IP) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_modem_IP = local_modem_IP; + // IP subnet mask + local_IP_subnet = IP_char2int(raw_data + 45); + if (local_IP_subnet != LAN_conf_applied.LAN_subnet_mask) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_subnet_mask = local_IP_subnet; + // Default route active + local_default_route_activ = raw_data[49]; + if (local_default_route_activ != LAN_conf_applied.LAN_def_route_activ) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_def_route_activ = local_default_route_activ; + // Default route value + local_default_route = IP_char2int(raw_data + 50); + if (local_default_route != LAN_conf_applied.LAN_def_route) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_def_route = local_default_route; + // DNS active + local_DNS_activ = raw_data[54]; + if (local_DNS_activ != LAN_conf_applied.LAN_DNS_activ) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_DNS_activ = local_DNS_activ; + // DNS value + local_DNS_value = IP_char2int(raw_data + 55); + if (local_DNS_value != LAN_conf_applied.LAN_DNS_value) {need_LAN_reset = 1;} + LAN_conf_applied.LAN_DNS_value = local_DNS_value; + + if (need_LAN_reset) { + HMI_force_exit(); + reset_DHCP_table(&LAN_conf_applied); + W5500_re_configure(); + need_LAN_reset = 0; + } + my_client_radio_connexion_state = 2; + connect_state_machine_counter = 0; + time_counter_last_ack = 0; + //printf("\r\n REQ ACK Received\r\n\r\n"); } void signaling_connect_NACK_process (unsigned char reason_loc) { - //printf("NACK reason: %i\r\n", reason_loc); - G_connect_rejection_reason = reason_loc; - my_client_radio_connexion_state = 3; - connect_state_machine_counter = 0; + //printf("NACK reason: %i\r\n", reason_loc); + G_connect_rejection_reason = reason_loc; + my_client_radio_connexion_state = 3; + connect_state_machine_counter = 0; } static unsigned char loc_data[40]; void signaling_connect_req_TX(void) { - //static unsigned char loc_data[30]; - loc_data[0] = 0x05; // signaling type = connection request - loc_data[1] = 21; // field size - strcpy ((char*)(loc_data+2), CONF_radio_my_callsign); // callsign - IP_int2char (CONF_radio_IP_size_requested, loc_data + 18); - loc_data[22] = CONF_radio_static_IP_requested; - signaling_TX_add_entry (loc_data, 23); - signaling_frame_push(); - //printf ("\r\nNEW REQUEST TX\r\n\r\n"); + //static unsigned char loc_data[30]; + loc_data[0] = 0x05; // signaling type = connection request + loc_data[1] = 21; // field size + strcpy ((char*)(loc_data+2), CONF_radio_my_callsign); // callsign + IP_int2char (CONF_radio_IP_size_requested, loc_data + 18); + loc_data[22] = CONF_radio_static_IP_requested; + signaling_TX_add_entry (loc_data, 23); + signaling_frame_push(); + //printf ("\r\nNEW REQUEST TX\r\n\r\n"); } void signaling_disconnect_req_process (unsigned loc_ID, unsigned char* loc_callsign) { - int i; - int existing_entry = -1; - for (i=0; i> 8; - loc_data[30] = TA_loc & 0xFF; - loc_data[31] = (TA_loc & 0xFF00) >> 8; - signaling_TX_add_entry (loc_data, 32); //previous 27 + strcpy ((char*)(loc_data+3), loc_callsign); + loc_data[18] = 0; //null termination of callsign + IP_int2char (loc_IP_start, loc_data + 19); // IP start + IP_int2char (loc_IP_size, loc_data + 23); // IP start + loc_data[27] = RSSI_loc; // RSSI uplink + loc_data[28] = BER_loc & 0xFF; // error rate uplink (lsB first) + loc_data[29] = (BER_loc & 0xFF00) >> 8; + loc_data[30] = TA_loc & 0xFF; + loc_data[31] = (TA_loc & 0xFF00) >> 8; + signaling_TX_add_entry (loc_data, 32); //previous 27 } //void signaling_whois_TX(unsigned char* TX_signal_frame_raw) { void signaling_whois_TX(void) { - int i; - unsigned int RSSI_loc; - if (is_TDMA_master) { - signaling_single_whois_TX (0x7F, CONF_radio_my_callsign, LAN_conf_applied.LAN_modem_IP, 0, 0, 0, 0); // master entry - for (i=0; i> 8; - signaling_single_whois_TX (i, CONF_radio_addr_table_callsign[i], - CONF_radio_addr_table_IP_begin[i], CONF_radio_addr_table_IP_size[i], - RSSI_loc, G_radio_addr_table_BER[i], (short int)(TDMA_table_TA[i] / 10) ); - } - } - - } - else if (my_client_radio_connexion_state == 2) { //Slave, only sends if really connected - signaling_single_whois_TX (my_radio_client_ID, CONF_radio_my_callsign, LAN_conf_applied.DHCP_range_start, LAN_conf_applied.DHCP_range_size, G_downlink_RSSI, G_downlink_BER, 0); // client's own entry - signaling_single_whois_TX (0x7F, CONF_radio_master_callsign, LAN_conf_applied.LAN_modem_IP, 0, 0, 0, 0); //MASTER entry - } + int i; + unsigned int RSSI_loc; + if (is_TDMA_master) { + signaling_single_whois_TX (0x7F, CONF_radio_my_callsign, LAN_conf_applied.LAN_modem_IP, 0, 0, 0, 0); // master entry + for (i=0; i> 8; + signaling_single_whois_TX (i, CONF_radio_addr_table_callsign[i], + CONF_radio_addr_table_IP_begin[i], CONF_radio_addr_table_IP_size[i], + RSSI_loc, G_radio_addr_table_BER[i], (short int)(TDMA_table_TA[i] / 10) ); + } + } + + } + else if (my_client_radio_connexion_state == 2) { //Slave, only sends if really connected + signaling_single_whois_TX (my_radio_client_ID, CONF_radio_my_callsign, LAN_conf_applied.DHCP_range_start, LAN_conf_applied.DHCP_range_size, G_downlink_RSSI, G_downlink_BER, 0); // client's own entry + signaling_single_whois_TX (0x7F, CONF_radio_master_callsign, LAN_conf_applied.LAN_modem_IP, 0, 0, 0, 0); //MASTER entry + } } void signaling_TX_add_entry(unsigned char* raw_data, int size) { - if (TX_signal_frame_point == 0) { - signaling_frame_init(); - } - if ( (TX_signal_frame_point + size) < 248) { //enough space for this entry in current frame - memcpy ((TX_signal_frame_raw + TX_signal_frame_point), raw_data, size); - TX_signal_frame_point = TX_signal_frame_point + size; - } else { // not enough space - signaling_frame_push(); // send previous entries - signaling_frame_init(); // initialize new frame - memcpy ((TX_signal_frame_raw + TX_signal_frame_point), raw_data, size); - TX_signal_frame_point = TX_signal_frame_point + size; - } + if (TX_signal_frame_point == 0) { + signaling_frame_init(); + } + if ( (TX_signal_frame_point + size) < 248) { //enough space for this entry in current frame + memcpy ((TX_signal_frame_raw + TX_signal_frame_point), raw_data, size); + TX_signal_frame_point = TX_signal_frame_point + size; + } else { // not enough space + signaling_frame_push(); // send previous entries + signaling_frame_init(); // initialize new frame + memcpy ((TX_signal_frame_raw + TX_signal_frame_point), raw_data, size); + TX_signal_frame_point = TX_signal_frame_point + size; + } } //void signaling_frame_push(unsigned char* TX_signal_frame_raw) { void signaling_frame_push(void) { - // int rsize_needed; - int size_w_FEC; - int size_wo_FEC; - unsigned char rframe_length; - unsigned int timer_snapshot; - - TX_signal_frame_raw[TX_signal_frame_point] = 0xFF; // END flag - TX_signal_frame_raw[TX_signal_frame_point + 1] = 0x00; // size 0 - TX_signal_frame_point = TX_signal_frame_point + 2; - size_wo_FEC = TX_signal_frame_point; - if (size_wo_FEC < 69) { - size_wo_FEC = 69; - } - // rsize_needed = 100 + (size_wo_FEC * 1.4); + // int rsize_needed; + int size_w_FEC; + int size_wo_FEC; + unsigned char rframe_length; + unsigned int timer_snapshot; + + TX_signal_frame_raw[TX_signal_frame_point] = 0xFF; // END flag + TX_signal_frame_raw[TX_signal_frame_point + 1] = 0x00; // size 0 + TX_signal_frame_point = TX_signal_frame_point + 2; + size_wo_FEC = TX_signal_frame_point; + if (size_wo_FEC < 69) { + size_wo_FEC = 69; + } + // rsize_needed = 100 + (size_wo_FEC * 1.4); - //printf("sig NO ext SRAM\r\n"); - //if ((TXPS_FIFO->last_ready - TXPS_FIFO->RD_point) < (TXPS_FIFO_threshold_sig - rsize_needed) ) { //16380 - if (TX_FIFO_full_global(0) == 0) { - timer_snapshot = GLOBAL_timer.read_us(); - //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = (timer_snapshot >> 16) & 0xFF; //timer - rframe_TX[0] = (timer_snapshot >> 16) & 0xFF; - //TXPS_FIFO->WR_point++; - size_w_FEC = size_w_FEC_compute (size_wo_FEC); - - rframe_length = size_w_FEC + 1 - SI4463_offset_size; - //if (rframe_length < 0) {rframe_length = 0;} - //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = rframe_length; - //TXPS_FIFO->WR_point++; - rframe_TX[1] = rframe_length; - //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = 0x00; //TDMA byte - //TXPS_FIFO->WR_point++; - rframe_TX[2] = 0x00; //TDMA byte - //size_w_FEC = FEC_encode(TX_signal_frame_raw, TXPS_FIFO, size_wo_FEC); - size_w_FEC = FEC_encode2(TX_signal_frame_raw, rframe_TX+3, size_wo_FEC); - //TX_intern_FIFO_write(rframe_TX, size_w_FEC+3); - TX_FIFO_write_global(rframe_TX, size_w_FEC+3); - //TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; - } - TX_signal_frame_point = 0; + //printf("sig NO ext SRAM\r\n"); + //if ((TXPS_FIFO->last_ready - TXPS_FIFO->RD_point) < (TXPS_FIFO_threshold_sig - rsize_needed) ) { //16380 + if (TX_FIFO_full_global(0) == 0) { + timer_snapshot = GLOBAL_timer.read_us(); + //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = (timer_snapshot >> 16) & 0xFF; //timer + rframe_TX[0] = (timer_snapshot >> 16) & 0xFF; + //TXPS_FIFO->WR_point++; + size_w_FEC = size_w_FEC_compute (size_wo_FEC); + + rframe_length = size_w_FEC + 1 - SI4463_offset_size; + //if (rframe_length < 0) {rframe_length = 0;} + //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = rframe_length; + //TXPS_FIFO->WR_point++; + rframe_TX[1] = rframe_length; + //TXPS_FIFO->data[TXPS_FIFO->WR_point & TXPS_FIFO->mask] = 0x00; //TDMA byte + //TXPS_FIFO->WR_point++; + rframe_TX[2] = 0x00; //TDMA byte + //size_w_FEC = FEC_encode(TX_signal_frame_raw, TXPS_FIFO, size_wo_FEC); + size_w_FEC = FEC_encode2(TX_signal_frame_raw, rframe_TX+3, size_wo_FEC); + //TX_intern_FIFO_write(rframe_TX, size_w_FEC+3); + TX_FIFO_write_global(rframe_TX, size_w_FEC+3); + //TXPS_FIFO->last_ready = TXPS_FIFO->WR_point; + } + TX_signal_frame_point = 0; } void signaling_periodic_call() { // called every 2 to 6 seconds - int i; - unsigned int time_since_last_ack; - unsigned int timer_snapshot; - // CLIENT STATE MACHINE - if (is_TDMA_master == 0) { - if ( (my_client_radio_connexion_state==1) && (connect_state_machine_counter>2) ) {//waiting for connexion - signaling_connect_req_TX(); - connect_state_machine_counter = 0; - timer_snapshot = GLOBAL_timer.read_us(); - if ( (timer_snapshot - last_rframe_seen) > CONF_radio_timeout_small) { - SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, 500000); - } - } - if ( (my_client_radio_connexion_state==2) && (connect_state_machine_counter>5) ) {//already connected periodic update - signaling_connect_req_TX(); - // no counter reset, the ack reception does it - } - if ( (my_client_radio_connexion_state==3) && (connect_state_machine_counter>15) ) {//rejected, new attempt every 15 - signaling_connect_req_TX(); - connect_state_machine_counter = 0; - } - if ( (my_client_radio_connexion_state==2) && (time_counter_last_ack > CONNECTION_TIMEOUT) ) {//timeout, no ACK received for long time - // transition to state 1 "waiting for connection" - my_client_radio_connexion_state = 1; - radio_flush_TX_FIFO(); - my_radio_client_ID = 0x7E; - TDMA_NULL_frame_init(70); - } - if ( (my_client_radio_connexion_state==4) && (connect_state_machine_counter>2) ) {//waiting for disconnection - signaling_disconnect_req_TX(); - connect_state_machine_counter = 0; - } - connect_state_machine_counter++; - time_counter_last_ack++; - } - - // MASTER : timeout management for clients - if (is_TDMA_master) { - timer_snapshot = GLOBAL_timer.read_us(); - for (i=0; i< radio_addr_table_size; i++) { - time_since_last_ack = timer_snapshot - CONF_radio_addr_table_date[i]; - if ( (CONF_radio_addr_table_status[i] == 1) && (time_since_last_ack > (2000000UL*CONNECTION_TIMEOUT*CONF_signaling_period)) ) { - CONF_radio_addr_table_status[i] = 0; // force disconnect - } - } - } - - signaling_whois_TX(); - if (TX_signal_frame_point >0) { - signaling_frame_push(); - - } + int i; + unsigned int time_since_last_ack; + unsigned int timer_snapshot; + // CLIENT STATE MACHINE + if (is_TDMA_master == 0) { + if ( (my_client_radio_connexion_state==1) && (connect_state_machine_counter>2) ) {//waiting for connexion + signaling_connect_req_TX(); + connect_state_machine_counter = 0; + timer_snapshot = GLOBAL_timer.read_us(); + if ( (timer_snapshot - last_rframe_seen) > CONF_radio_timeout_small) { + SI4463_prepa_TX_1_call.attach_us(&SI4463_prepa_TX_1, 500000); + } + } + if ( (my_client_radio_connexion_state==2) && (connect_state_machine_counter>5) ) {//already connected periodic update + signaling_connect_req_TX(); + // no counter reset, the ack reception does it + } + if ( (my_client_radio_connexion_state==3) && (connect_state_machine_counter>15) ) {//rejected, new attempt every 15 + signaling_connect_req_TX(); + connect_state_machine_counter = 0; + } + if ( (my_client_radio_connexion_state==2) && (time_counter_last_ack > CONNECTION_TIMEOUT) ) {//timeout, no ACK received for long time + // transition to state 1 "waiting for connection" + my_client_radio_connexion_state = 1; + radio_flush_TX_FIFO(); + my_radio_client_ID = 0x7E; + TDMA_NULL_frame_init(70); + } + if ( (my_client_radio_connexion_state==4) && (connect_state_machine_counter>2) ) {//waiting for disconnection + signaling_disconnect_req_TX(); + connect_state_machine_counter = 0; + } + connect_state_machine_counter++; + time_counter_last_ack++; + } + + // MASTER : timeout management for clients + if (is_TDMA_master) { + timer_snapshot = GLOBAL_timer.read_us(); + for (i=0; i< radio_addr_table_size; i++) { + time_since_last_ack = timer_snapshot - CONF_radio_addr_table_date[i]; + if ( (CONF_radio_addr_table_status[i] == 1) && (time_since_last_ack > (2000000UL*CONNECTION_TIMEOUT*CONF_signaling_period)) ) { + CONF_radio_addr_table_status[i] = 0; // force disconnect + } + } + } + + signaling_whois_TX(); + if (TX_signal_frame_point >0) { + signaling_frame_push(); + + } } \ No newline at end of file diff --git a/NPR_14/source/signaling.h b/NPR_14/source/signaling.h index 90eb069..25bc7a9 100644 --- a/NPR_14/source/signaling.h +++ b/NPR_14/source/signaling.h @@ -25,9 +25,9 @@ void signaling_frame_exploitation (unsigned char* unFECdata, int unFECsize, int TA_input); void signaling_whois_interpret(unsigned char loc_ID, unsigned char* loc_callsign, - unsigned long int loc_IP_start, unsigned long int loc_IP_size, - unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc); - + unsigned long int loc_IP_start, unsigned long int loc_IP_size, + unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc); + void signaling_print_who(void); unsigned long int signaling_lookfor_IP_range(unsigned long int req_size); @@ -49,15 +49,15 @@ void signaling_disconnect_ACK_TX (unsigned loc_ID, unsigned char* loc_callsign); void signaling_frame_init(); void signaling_single_whois_TX(unsigned char loc_ID, char* loc_callsign, - unsigned long int loc_IP_start, unsigned long int loc_IP_size, - unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc); - + unsigned long int loc_IP_start, unsigned long int loc_IP_size, + unsigned char RSSI_loc, unsigned short int BER_loc, short int TA_loc); + void signaling_TX_add_entry(unsigned char* raw_data, int size); - + void signaling_whois_TX(); void signaling_frame_push(); - + void signaling_periodic_call(); - + #endif \ No newline at end of file