コード例 #1
0
ファイル: emb6_conn_udp.c プロジェクト: AdamRLukaitis/RIOT
static int _reg_and_bind(struct udp_socket *c, void *ptr,
                         udp_socket_input_callback_t cb, uint16_t port)
{
    if (udp_socket_register(c, ptr, cb) < 0) {
        return -EMFILE;
    }
    if (udp_socket_bind(c, port) < 0) {
        udp_socket_close(c);
        return -EALREADY;
    }
    return 0;
}
コード例 #2
0
ファイル: udp-multicast.c プロジェクト: ADVANSEE/mist
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(multicast_example_process, ev, data)
{
  PROCESS_BEGIN();

  /* Create a linkl-local multicast addresses. */
  uip_ip6addr(&addr, 0xff02, 0, 0, 0, 0, 0, 0x1337, 0x0001);

  /* Join local group. */
  if(uip_ds6_maddr_add(&addr) == NULL) {
    printf("Error: could not join local multicast group.\n");
  }

  /* Register UDP socket callback */
  udp_socket_register(&s, NULL, receiver);

  /* Bind UDP socket to local port */
  udp_socket_bind(&s, PORT);

  /* Connect UDP socket to remote port */
  udp_socket_connect(&s, NULL, PORT);

  while(1) {

    /* Set up two timers, one for keeping track of the send interval,
       which is periodic, and one for setting up a randomized send time
       within that interval. */
    etimer_set(&periodic_timer, SEND_INTERVAL);
    etimer_set(&send_timer, (random_rand() % SEND_INTERVAL));

    PROCESS_WAIT_UNTIL(etimer_expired(&send_timer));

    printf("Sending multicast\n");
    udp_socket_sendto(&s,
                      "hello", 6,
                      &addr, PORT);

    PROCESS_WAIT_UNTIL(etimer_expired(&periodic_timer));
  }

  PROCESS_END();
}
コード例 #3
0
ファイル: propple-socket.c プロジェクト: ADVANSEE/mist
/*---------------------------------------------------------------------------*/
int
propple_socket_open(struct propple_socket *s,
                    void *ptr,
                    propple_socket_input_callback_t callback,
                    uint16_t port,
                    clock_time_t interval,
                    clock_time_t interval_max,
                    uint8_t duptheshold)
{
  s->ptr = ptr;
  s->callback = callback;
  s->interval = interval;
  s->interval_max = interval_max;
  s->duptheshold = duptheshold;
  s->port = port;

  s->duplicates = 0;
  s->interval_scaling = 0;

  /* Register UDP socket callback */
  if(udp_socket_register(&s->s, s, recv) == 0) {
    printf("propple_socket_open: udp_socket_register failed\n");
    return 0;
  }

  /* Bind UDP socket to local port */
  if(udp_socket_bind(&s->s, port) == 0) {
    printf("propple_socket_open: udp_socket_bind failed\n");
    return 0;
  }

  /* Connect UDP socket to remote port */
  if(udp_socket_connect(&s->s, NULL, port) == 0) {
    printf("propple_socket_open: udp_socket_connect failed\n");
    return 0;
  }

  return 1;
}
コード例 #4
0
ファイル: emb6_sock_udp.c プロジェクト: kbumsik/RIOT
static int _reg(struct udp_socket *c, void *ptr, udp_socket_input_callback_t cb,
                const sock_udp_ep_t *local, const sock_udp_ep_t *remote)
{
    if (((local != NULL) && (local->family != AF_INET6)) ||
        ((remote != NULL) && (remote->family != AF_INET6))) {
        return -EAFNOSUPPORT;
    }
    if (udp_socket_register(c, ptr, cb) < 0) {
        return -ENOMEM;
    }
    if (local != NULL) {
        if (udp_socket_bind(c, local->port) < 0) {
            udp_socket_close(c);
            return -EADDRINUSE;
        }
    }
    if (remote != NULL) {
        /* check of return value not necessary, since neither c nor
         * c->udp_conn is NULL (only error case) at this point */
        udp_socket_connect(c, (uip_ipaddr_t *)&remote->addr, remote->port);
    }
    return 0;
}
コード例 #5
0
ファイル: app_6LN.c プロジェクト: ULE-Alliance/ULE_6LowPan
void init_udp() {
	udp_socket_register(&client_sock,0,&udp_data_received);
	udp_socket_bind(&client_sock, 3001);
}