void tcpinject_connectDone(error_t error) { if (error==E_SUCCESS) { tcpinject_vars.pkt = openqueue_getFreePacketBuffer(COMPONENT_TCPINJECT); if (tcpinject_vars.pkt==NULL) { openserial_printError(COMPONENT_TCPINJECT,ERR_NO_FREE_PACKET_BUFFER, (errorparameter_t)0, (errorparameter_t)0); return; } tcpinject_vars.pkt->creator = COMPONENT_TCPINJECT; tcpinject_vars.pkt->owner = COMPONENT_TCPINJECT; tcpinject_vars.pkt->l4_protocol = IANA_UDP; tcpinject_vars.pkt->l4_sourcePortORicmpv6Type = WKP_TCP_INJECT; tcpinject_vars.pkt->l4_destination_port = tcpinject_vars.hisPort; memcpy(&(tcpinject_vars.pkt->l3_destinationORsource),&tcpinject_vars.hisAddress,sizeof(open_addr_t)); packetfunctions_reserveHeaderSize(tcpinject_vars.pkt,6); ((uint8_t*)tcpinject_vars.pkt->payload)[0] = 'p'; ((uint8_t*)tcpinject_vars.pkt->payload)[1] = 'o'; ((uint8_t*)tcpinject_vars.pkt->payload)[2] = 'i'; ((uint8_t*)tcpinject_vars.pkt->payload)[3] = 'p'; ((uint8_t*)tcpinject_vars.pkt->payload)[4] = 'o'; ((uint8_t*)tcpinject_vars.pkt->payload)[5] = 'i'; if (opentcp_send(tcpinject_vars.pkt)==E_FAIL) { openqueue_freePacketBuffer(tcpinject_vars.pkt); } return; } }
void ohlone_sendpkt() { uint8_t buffer[TCP_DEFAULT_WINDOW_SIZE]; uint8_t buffer_len; buffer_len = ohlone_webpage(ohlone_vars.getRequest, ohlone_vars.httpChunk++, buffer); if (buffer_len == 0) { // No more to send // close TCP session, but keep listening ohlone_vars.getRequest[0] = '/'; ohlone_vars.getRequest[1] = ' '; opentcp_close(); return; } ohlone_vars.pkt = openqueue_getFreePacketBuffer(COMPONENT_OHLONE); if (ohlone_vars.pkt==NULL) { openserial_printError(COMPONENT_OHLONE,ERR_NO_FREE_PACKET_BUFFER, (errorparameter_t)0, (errorparameter_t)0); opentcp_close(); return; } ohlone_vars.pkt->creator = COMPONENT_OHLONE; ohlone_vars.pkt->owner = COMPONENT_OHLONE; packetfunctions_reserveHeaderSize(ohlone_vars.pkt, buffer_len); memcpy(ohlone_vars.pkt->payload, buffer, buffer_len); if ((opentcp_send(ohlone_vars.pkt))==E_FAIL) { openqueue_freePacketBuffer(ohlone_vars.pkt); opentcp_close(); } }
void techo_receive(OpenMote* self, OpenQueueEntry_t* msg) { uint16_t temp_l4_destination_port; msg->owner = COMPONENT_TECHO; //reply with the same OpenQueueEntry_t msg->creator = COMPONENT_TECHO; msg->l4_protocol = IANA_TCP; temp_l4_destination_port = msg->l4_destination_port; msg->l4_destination_port = msg->l4_sourcePortORicmpv6Type; msg->l4_sourcePortORicmpv6Type = temp_l4_destination_port; if ( opentcp_send(self, msg)==E_FAIL) { openqueue_freePacketBuffer(self, msg); } }