void macpong_send(uint8_t payloadCtr) { OpenQueueEntry_t* pkt; uint8_t i; pkt = openqueue_getFreePacketBuffer(COMPONENT_UECHO); if (pkt==NULL) { openserial_printError( COMPONENT_IPHC, ERR_NO_FREE_PACKET_BUFFER, (errorparameter_t)0, (errorparameter_t)0 ); return; } pkt->creator = COMPONENT_IPHC; pkt->owner = COMPONENT_IPHC; neighbors_getNeighbor(&pkt->l2_nextORpreviousHop,ADDR_64B,0); packetfunctions_reserveHeaderSize(pkt,LEN_PAYLOAD); ((uint8_t*)pkt->payload)[0] = payloadCtr; for (i=1;i<LEN_PAYLOAD;i++){ ((uint8_t*)pkt->payload)[i] = i; } sixtop_send(pkt); }
port_INLINE void light_send_one_packet(uint8_t pktId) { OpenQueueEntry_t* pkt; // get a free packet buffer pkt = openqueue_getFreePacketBuffer(COMPONENT_LIGHT); if (pkt==NULL) { openserial_printError(COMPONENT_LIGHT,ERR_NO_FREE_PACKET_BUFFER,0,0); return; } // take ownership over the packet pkt->owner = COMPONENT_LIGHT; pkt->creator = COMPONENT_LIGHT; // fill payload packetfunctions_reserveHeaderSize(pkt,sizeof(light_ht)); ((light_ht*)(pkt->payload))->type = LONGTYPE_DATA; ((light_ht*)(pkt->payload))->src = idmanager_getMyShortID(); ((light_ht*)(pkt->payload))->light_info = light_get_light_info(pktId); // send if ((sixtop_send(pkt))==E_FAIL) { openqueue_freePacketBuffer(pkt); } }
void sixtop_removeCell(open_addr_t* neighbor){ OpenQueueEntry_t* pkt; bool outcome; uint8_t len; uint8_t type; uint8_t frameID; uint8_t flag; cellInfo_ht cellList[SCHEDULEIEMAXNUMCELLS]; memset(cellList,0,sizeof(cellList)); // filter parameters if (sixtop_vars.six2six_state!=SIX_IDLE){ return; } if (neighbor==NULL){ return; } // generate candidate cell list outcome = sixtop_candidateRemoveCellList( &type, &frameID, &flag, cellList, neighbor ); if(outcome == FALSE){ return; } // get a free packet buffer pkt = openqueue_getFreePacketBuffer(COMPONENT_SIXTOP_RES); if(pkt==NULL) { openserial_printError( COMPONENT_SIXTOP_RES, ERR_NO_FREE_PACKET_BUFFER, (errorparameter_t)0, (errorparameter_t)0 ); return; } // update state sixtop_vars.six2six_state = SIX_SENDING_REMOVEREQUEST; // declare ownership over that packet pkt->creator = COMPONENT_SIXTOP_RES; pkt->owner = COMPONENT_SIXTOP_RES; memcpy( &(pkt->l2_nextORpreviousHop), neighbor, sizeof(open_addr_t) ); // create packet len = 0; len += processIE_prependSheduleIE(pkt,type,frameID, flag,cellList); len += processIE_prependOpcodeIE(pkt,SIXTOP_REMOVE_SOFT_CELL_REQUEST); processIE_prependMLMEIE(pkt,len); // indicate IEs present pkt->l2_IEListPresent = IEEE154_IELIST_YES; // send packet sixtop_send(pkt); // update state sixtop_vars.six2six_state = SIX_WAIT_REMOVEREQUEST_SENDDONE; // arm timeout opentimers_setPeriod( sixtop_vars.timeoutTimerId, TIME_MS, SIX2SIX_TIMEOUT_MS ); opentimers_restart(sixtop_vars.timeoutTimerId); }