void net_node_init(void){ local.b0 = *(&(DEVINFO->UNIQUEL)+0); local.b1 = *(&(DEVINFO->UNIQUEL)+1); local.b2 = *(&(DEVINFO->UNIQUEL)+2); local.b3 = *(&(DEVINFO->UNIQUEL)+3); local.b4 = 0x00; broadcast.b0 = 0x55; broadcast.b1 = 0xAA; broadcast.b2 = 0xff; broadcast.b3 = 0xAA; broadcast.b4 = 0x55; // local and broadcast recive adresses and tx on local address Radio_init(&local, &broadcast); }
int main(void) { WdtGo(T3CON_ENABLE_DIS);//stop watch-dog uart_init(); led_init(); Radio_init();//inicializuje radio prenos SD_init();//nacita kartu a vytvori subor prijaty cez radio prenos for(i=0; i<29; i++) { Radio_recieve();//pocka na prijatie jedneho paketu if (RIE_Response == RIE_Success) { printf("\n\r-> %s \n@ RSSI %d ",Buffer,(int)RSSI); fr = f_printf(&fil,"\n\r-> %s \n@ RSSI %d \n",Buffer,(int)RSSI); } else { printf("\n\r-> ERROR"); fr = f_printf(&fil,"\n\r-> ERROR"); } } RIE_Response = RadioTerminateRadioOp(); fr=f_close(&fil);//koiec zapisu na kartu printf("\nzatvaram\n"); if(fr)printf("chyba pri zatvarani suboru %d\n",fr); while (1)//ukonceny zapis { DioTgl(pADI_GP4,BIT2); Delay(); } }
void net_base_init(void){ struct radio_address local; struct radio_address broadcast; //memcpy(&local, (void *) &(DEVINFO->UNIQUEL), 4); local.b0 = *(&(DEVINFO->UNIQUEL)+0); local.b1 = *(&(DEVINFO->UNIQUEL)+1); local.b2 = *(&(DEVINFO->UNIQUEL)+2); local.b3 = *(&(DEVINFO->UNIQUEL)+3); local.b4 = 0x00; broadcast.b0 = 0x55; broadcast.b1 = 0xAA; broadcast.b2 = 0xff; broadcast.b3 = 0xAA; broadcast.b4 = 0x55; // local and broadcast recive adresses and tx on local address Radio_init(&local, &broadcast); }
void net_test_init(uint8_t test){ struct radio_address local; struct radio_address broadcast; //memcpy(&local, (void *) &(DEVINFO->UNIQUEL), 4); local.b0 = *(&(DEVINFO->UNIQUEL)+0); local.b1 = *(&(DEVINFO->UNIQUEL)+1); local.b2 = *(&(DEVINFO->UNIQUEL)+2); local.b3 = *(&(DEVINFO->UNIQUEL)+3); local.b4 = 0x00; broadcast.b0 = 0x55; broadcast.b1 = 0xAA; broadcast.b2 = 0xff; broadcast.b3 = 0xAA; broadcast.b4 = 0x55; // local and broadcast recive adresses and tx on local address Radio_init(&local, &broadcast); if (test == NET_TEST_TX_ONLY) { struct net_packet_broadcast p; Radio_enable(false); Radio_setMode(Radio_Mode_TX, false); p.hello[0] = 'h'; p.hello[1] = 'e'; p.hello[2] = 'l'; p.hello[3] = 'l'; p.hello[4] = 'o'; while(true) { DBG_probe_on(DBG_Probe_1); p.time = RTC_getTime(); p.tick = RTC_getTickCount(); Radio_loadbuf_broadcast(&p); Radio_enable(true); for(volatile uint8_t i=0; i < 9; ++i) { __NOP(); } Radio_enable(false); while(radio_has_packets_to_sent()){ __WFI(); } DBG_probe_off(DBG_Probe_1); delay(250); delay(250); } } else if (test == NET_TEST_RX_ONLY) { Radio_setMode(Radio_Mode_RX, false); Radio_enable(true); //uint8_t i = 0; while(true){ if(Radio_available() > 0) { struct net_packet_broadcast buf; Radio_recive((uint8_t *) &buf, sizeof(struct net_packet_broadcast)); //++i; //if (i > 5) { // RTC_reset_irq(abs((buf.tick % RTC_S) - (RTC_getTickCount() % RTC_S))); // i = 0; //} DBG_probe_toggle(DBG_Probe_1); } } } else if ( test == NET_TEST_RX_TX) { struct net_packet_broadcast sent; struct net_packet_broadcast recv; sent.hello[0] = 'h'; sent.hello[1] = 'e'; sent.hello[2] = 'l'; sent.hello[3] = 'l'; sent.hello[4] = 'o'; Radio_setMode(Radio_Mode_TX, false); Radio_loadbuf_broadcast(&sent); Radio_enable(true); for(volatile int i=0; i < 10; ++i) { __NOP(); } Radio_enable(false); while (radio_has_packets_to_sent()); while(true){ Radio_setMode(Radio_Mode_RX, false); Radio_enable(true); while (Radio_available() == 0); Radio_recive((uint8_t *) &recv, sizeof(struct net_packet_broadcast)); Radio_enable(false); Radio_setMode(Radio_Mode_TX, false); Radio_loadbuf_broadcast(&sent); Radio_enable(true); for(volatile int i=0; i < 150; ++i) { __NOP(); } Radio_enable(false); while (radio_has_packets_to_sent()); } } else { while(true); } }