Esempio n. 1
0
char loop(struct rtimer* t, void *ptr){
  PT_BEGIN(&pt);
  uint8_t packet[TIMESTAMP_BIT];
  int packet_len = 0;

  sclock_init(&sclk, TYPE_CLOCK);
  ntp_init(&ntp, &sclk);

  static struct timestamp second;
  timestamp_init(&second);
  second.sec = 1;

  while(1) {
    sclock_etimer_set(&sclk, &et, &second);
    PT_YIELD_UNTIL(&pt,etimer_expired(&et));
    leds_invert(LEDS_RED);

#if REQUEST
    packet_len = ntp_make_request(&ntp, packet); 
    packetbuf_copyfrom(packet, packet_len);
    abc_send(&abc);
#endif
  }

  PT_END(&pt);
}
Esempio n. 2
0
/*---------------------------------------------------------------------------*/
int
broadcast_send(struct broadcast_conn *c)
{
  PRINTF("%d.%d: broadcast_send\n",
	 rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1]);
  packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr);
  return abc_send(&c->c);
}
Esempio n. 3
0
/*---------------------------------------------------------------------------*/
static void ntp_recv_packet(struct abc_conn *c)
{  
uint8_t* recv = (uint8_t *)packetbuf_dataptr();
#if REQUEST
  ntp_handle_ack(&ntp, recv);
#else
  uint8_t send[NTP_ACK_LEN];
  int send_len;
  send_len = ntp_make_ack(&ntp, send, recv);
  packetbuf_copyfrom(send,send_len);
  abc_send(&abc);
#endif
}
Esempio n. 4
0
/*---------------------------------------------------------------------------*/
static void
send(void *ptr)
{
  struct polite_conn *c = ptr;

  if(c->q != NULL) {
    queuebuf_to_packetbuf(c->q);
    queuebuf_free(c->q);
    c->q = NULL;
    abc_send(&c->c);
    if(c->cb->sent) {
	c->cb->sent(c);
    }
  }
}
Esempio n. 5
0
/*---------------------------------------------------------------------------*/
static void
do_sending(void)
{
  int i;

  cc2420_set_channel(11);
  cc2420_set_txpower(1);

  for(i = 0;i < send_amount; i++) {
    packetbuf_copyfrom(send_string, send_length);

    mac->on();
    abc_send(&abc);
    mac->off(0);
  }
  cc2420_set_txpower(31);
  cc2420_set_channel(RF_CHANNEL);
}
Esempio n. 6
0
static void bacast_signed_message()
{
        msg_header_t* header;
        uint8_t* data;
        packetbuf_clear();
        header = ( msg_header_t* ) ( packetbuf_dataptr() );
        data = ( uint8_t* ) ( header + 1 );

        random_data ( data, MSG_LEN );

        hton_uint16 ( &header->data_len, MSG_LEN );

	static struct etimer nrg;
	energest_flush();
        ENERGEST_ON ( ENERGEST_TYPE_LPM );
        ENERGEST_ON ( ENERGEST_TYPE_TRANSMIT );
        ENERGEST_ON ( ENERGEST_TYPE_LISTEN );
        ENERGEST_ON ( ENERGEST_TYPE_CPU );
        last.cpu = energest_type_time ( ENERGEST_TYPE_CPU )/RTIMER_SECOND;
        ENERGEST_OFF ( ENERGEST_TYPE_CPU );
        last.lpm = energest_type_time ( ENERGEST_TYPE_LPM );
        last.transmit = energest_type_time ( ENERGEST_TYPE_TRANSMIT );
        last.listen = energest_type_time ( ENERGEST_TYPE_LISTEN );
        ENERGEST_ON ( ENERGEST_TYPE_CPU );

        ecdsa_sign ( data, MSG_LEN, header->r, header->s, prKey_alice );

        diff.cpu = energest_type_time ( ENERGEST_TYPE_CPU ) - last.cpu;
        diff.lpm = energest_type_time ( ENERGEST_TYPE_LPM ) - last.lpm;
        diff.transmit = energest_type_time ( ENERGEST_TYPE_TRANSMIT ) - last.transmit;
        diff.listen = energest_type_time ( ENERGEST_TYPE_LISTEN ) - last.listen;

        ENERGEST_OFF ( ENERGEST_TYPE_CPU );
        ENERGEST_OFF ( ENERGEST_TYPE_LPM );
        ENERGEST_OFF ( ENERGEST_TYPE_TRANSMIT );
        ENERGEST_OFF ( ENERGEST_TYPE_LISTEN );

        packetbuf_set_datalen ( sizeof ( msg_header_t ) + MSG_LEN );
        abc_send ( &abc );
	printf ( "Clock ticks recorded by\nCPU = %ld \nLPM = %ld \nTRANSMITTER = %ld\nRECEIVER = %ld\n",diff.cpu, diff.lpm, diff.transmit, diff.listen );
}
Esempio n. 7
0
/*---------------------------------------------------------------------------*/
int p_broadcast_send(struct p_broadcast_conn *c, const void *data, size_t length)
{
	PRINTF("[pbroadcast.c] Sending message of size %d\n", (int)length);

	if (length > MAX_BROADCAST_PAYLOAD_SIZE)
	{
		PRINTF("[pbroadcast.c] ^ Error: Broadcast packet is too long.\n");
		return 0;
	}

	if (c == NULL)
	{
		PRINTF("[pbroadcast.c] ^ Error: Broadcast Connection is NULL\n");
		return 0;
	}

	packetbuf_clear();
	packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &linkaddr_node_addr);
	packetbuf_set_datalen(length + sizeof(uint16_t));

	// copy payload into packet
	memcpy(packetbuf_dataptr(), data, length);

	// copy hash to end of packet
	uint16_t hash = packet_hash(data, length);
	memcpy(packetbuf_dataptr() + (uintptr_t)length, &hash, sizeof(uint16_t));

	PRINTF("[pbroadcast.c] ^ Hash: %02X Datalen: %d\n", hash, packetbuf_datalen());
	PRINTF("[pbroadcast.c] ^ Data: ");
	DEBUG_DUMP_DATA(packetbuf_dataptr(), packetbuf_datalen());
	PRINTF("\n");

	int status = abc_send(&(c->abc));

	if (status == 0)
	{
		PRINTF("[pbroadcast.c] Broadcast could not be sent.\n");
	}

	return status;
}