📄 test_aplp.nc
字号:
//or the beacon broadcasting (PAN coordinator)
//in the MICAz motes a timer is needed to start all the above operations
//if (TYPE_DEVICE == COORDINATOR)
// call T_init.startOneShot(12000);
}
/*****************************************************
****************TIMER EVENTS***************************
******************************************************/
/*******************T_init**************************/
event void T_init.fired() {
//printfUART("Timer fired\n", "");
if (TYPE_DEVICE == COORDINATOR)
{
//printfUART("coordinator procedure\n", "");
//start forming a PAN
//command result_t request(uint32_t ScanChannels, uint8_t ScanDuration, uint8_t BeaconOrder, uint8_t SuperframeOrder, uint16_t PANId, bool BatteryLifeExtension);
call NLME_NETWORK_FORMATION.request(0x000000ff, 8, BEACON_ORDER, SUPERFRAME_ORDER, MAC_PANID,0);
//call Leds.redOff();
//call Leds.led0Off();
//call Test_timer.start(TIMER_REPEAT, 8000);
}
else
{
//printfUART("child procedure\n", "");
call NLME_NETWORK_DISCOVERY.request(0x000000ff, 8);
}
return;
}
/*******************T_test**************************/
event void T_test.fired() {
uint8_t nsdu_pay[20];
//printfUART("Test_timer.fired\n", "");
nsdu_pay[0]=0x05;
nsdu_pay[1]=0x05;
nsdu_pay[2]=0x05;
nsdu_pay[3]=0x05;
nsdu_pay[4]=0x05;
nsdu_pay[5]=0x05;
nsdu_pay[6]=0x05;
//call Leds.redToggle();
//command result_t NLDE_DATA.request(uint16_t DstAddr, uint8_t NsduLength, uint8_t Nsdu[], uint8_t NsduHandle, uint8_t Radius, uint8_t DiscoverRoute, bool SecurityEnable)
call NLDE_DATA.request(0x0000,0x07, nsdu_pay, 1, 1, 0x00, 0);
}
/*******************T_schedule**************************/
event void T_schedule.fired() {
//event that fires if the negotiation for beacon transmission is unsuccessful
//(the device does not receive any negotiation reply)
if(requested_scheduling == 0x01)
{
post start_sending_beacons_request();
}
}
/*****************************************************
****************NLDE EVENTS***************************
******************************************************/
/*************************NLDE_DATA*****************************/
event error_t NLDE_DATA.confirm(uint8_t NsduHandle, uint8_t Status)
{
//printfUART("NLME_DATA.confirm\n", "");
return SUCCESS;
}
event error_t NLDE_DATA.indication(uint16_t SrcAddress, uint16_t NsduLength,uint8_t Nsdu[100], uint16_t LinkQuality)
{
uint32_t start_time=0x00000000;
uint16_t start_time1=0x0000;
uint16_t start_time2=0x0000;
if (TYPE_DEVICE == COORDINATOR)
{
if(Nsdu[0] == SCHEDULING_REQUEST)
{
//the PAN coordinator receives a negotiation request
process_beacon_scheduling(SrcAddress,Nsdu[1],Nsdu[2]);
}
}
if(TYPE_DEVICE==ROUTER && requested_scheduling ==0x01)
{
//the routes receives a negotiation reply
atomic requested_scheduling =0x00;
if(Nsdu[0] == SCHEDULING_ACCEPT)
{
start_time1 =( (Nsdu[3] << 0) ) ;
start_time2 =( (Nsdu[4] << 8 ) | (Nsdu[5] << 0 ) );
start_time = ( ((uint32_t)start_time1 << 16) | (start_time2 << 0));
call NLME_START_ROUTER.request(Nsdu[1],Nsdu[2],0,start_time);
}
}
return SUCCESS;
}
/*****************************************************
****************NLME EVENTS***************************
******************************************************/
/*****************NLME_NETWORK_DISCOVERY**************************/
event error_t NLME_NETWORK_DISCOVERY.confirm(uint8_t NetworkCount,networkdescriptor networkdescriptorlist[], uint8_t Status)
{
//printfUART("NLME_NETWORK_DISCOVERY.confirm\n", "");
PAN_network = networkdescriptorlist[0];
if (TYPE_DEVICE == ROUTER)
{
//printfUART("go join router\n", "");
call NLME_JOIN.request(networkdescriptorlist[0].PANId, 0x01, 0, 0x000000ff, 8, 0, 0, 0);
}
else
{
//printfUART("go join non router\n", "");
call NLME_SYNC.request(1);
call NLME_JOIN.request(networkdescriptorlist[0].PANId, 0x00, 0, 0x000000ff, 8, 0, 0, 0);
}
return SUCCESS;
}
/*****************NLME_NETWORK_FORMATION**********************/
event error_t NLME_NETWORK_FORMATION.confirm(uint8_t Status)
{
//printfUART("NLME_NETWORK_FORMATION.confirm\n", "");
return SUCCESS;
}
/*****************NLME_START_ROUTER*****************************/
event error_t NLME_START_ROUTER.confirm(uint8_t Status)
{
//printfUART("NLME_START_ROUTER.confirm\n", "");
return SUCCESS;
}
/*************************NLME_JOIN*****************************/
event error_t NLME_JOIN.indication(uint16_t ShortAddress, uint32_t ExtendedAddress[], uint8_t CapabilityInformation, bool SecureJoin)
{
//printfUART("NLME_JOIN.indication\n", "");
return SUCCESS;
}
event error_t NLME_JOIN.confirm(uint16_t PANId, uint8_t Status)
{
//printfUART("NLME_JOIN.confirm\n", "");
switch(Status)
{
case NWK_SUCCESS: joined =0x01;
if (TYPE_DEVICE == ROUTER)
{
//join procedure successful
//call Leds.redOff();
call Leds.led0Off();
requested_scheduling = 0x01;
call T_schedule.startOneShot(9000);
//call Test_timer.start(TIMER_REPEAT, 8000);
}
else
{
//the device is an end device and starts transmitting data periodically
call T_test.startPeriodic(10000);
//call Test_timer.start(TIMER_REPEAT, 10000);
}
break;
case NWK_NOT_PERMITTED: joined =0x00;
//join failed
break;
default: //default procedure - join failed
joined =0x00;
break;
}
return SUCCESS;
}
/*************************NLME_LEAVE****************************/
event error_t NLME_LEAVE.indication(uint32_t DeviceAddress[])
{
////printfUART("NLME_LEAVE.indication\n", "");
return SUCCESS;
}
event error_t NLME_LEAVE.confirm(uint32_t DeviceAddress[], uint8_t Status)
{
//printfUART("NLME_LEAVE.confirm\n", "");
return SUCCESS;
}
/*************************NLME_SYNC*****************************/
event error_t NLME_SYNC.indication()
{
//printfUART("NLME_SYNC.indication\n", "");
return SUCCESS;
}
event error_t NLME_SYNC.confirm(uint8_t Status)
{
return SUCCESS;
}
/*************************************************************/
/***************** NLME-SET ********************/
/*************************************************************/
event error_t NLME_SET.confirm(uint8_t Status, uint8_t NIBAttribute)
{
return SUCCESS;
}
/*************************************************************/
/***************** NLME-GET ********************/
/*************************************************************/
event error_t NLME_GET.confirm(uint8_t Status, uint8_t NIBAttribute, uint16_t NIBAttributeLength, uint16_t NIBAttributeValue)
{
return SUCCESS;
}
event error_t NLME_RESET.confirm(uint8_t status){
call T_init.startOneShot(5000);
return SUCCESS;
}
event void Notify.notify( button_state_t state)
{
if (state == BUTTON_PRESSED) {
//call Leds.led0On();
call NLME_RESET.request();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -