Esempio n. 1
0
File: main.c Progetto: Rossano/RIOT
int test_net_if_get_set_pan_id(int iface)
{
    int32_t res;
    uint16_t pan_id = 0xabcd;

    if ((res = net_if_get_pan_id(iface + 1)) >= 0) {
        printf("FAILED: net_if_get_pan_id(%d) not failed\n", iface);
        return 0;
    }

    if ((res = net_if_set_pan_id(iface, pan_id)) < 0) {
        printf("FAILED: net_if_set_pan_id(%d, 0x%04x) failed\n", iface, pan_id);
        return 0;
    }

#if MODULE_AT86RF231 || MODULE_CC2420 || MODULE_MC1322X

    if ((res = net_if_get_pan_id(iface)) < 0) {
        printf("FAILED: net_if_get_pan_id(%d) failed\n", iface);
        return 0;
    }

    pan_id = (uint16_t)res;
#else
    pan_id = 0;
#endif

    return 1;
}
Esempio n. 2
0
void set_ieee802154_frame_values(int if_id, uint16_t dest_pan,
                                 ieee802154_frame_t *frame)
{
    int32_t pan_id = net_if_get_pan_id(if_id);
    // TODO: addresse aus ip paket auslesen und in frame einfuegen

    if (pan_id < 0) {
        frame->dest_pan_id = NTOLES(dest_pan);
        frame->src_pan_id = HTOLES(DEFAULT_IEEE_802154_PAN_ID);
    }
    else {
        frame->dest_pan_id = NTOLES(dest_pan);
        frame->src_pan_id = HTOLES((uint16_t)pan_id);
    }

    frame->seq_nr = macdsn;
    macdsn++;
}
Esempio n. 3
0
int net_if_send_packet_long(int if_id, net_if_eui64_t *target,
                            const void *payload, size_t payload_len)
{
    DEBUG("net_if_send_packet: if_id = %d, target = %016" PRIx64 ", "
          "payload = %p, payload_len = %d\n", if_id, NTOHLL(target->uint64), payload,
          payload_len);
    uint32_t response;

    if (if_id < 0 || if_id >= NET_IF_MAX || !interfaces[if_id].initialized) {
        DEBUG("Send packet: No interface initialized with ID %d.\n", if_id);
        return -1;
    }

    if (interfaces[if_id].transceivers & (TRANSCEIVER_CC2420 |
                                          TRANSCEIVER_AT86RF231 |
                                          TRANSCEIVER_MC1322X)) {
        ieee802154_packet_t p;
        memset(&p, 0, sizeof(ieee802154_packet_t));
        p.frame.payload = (uint8_t *)payload;
        p.frame.payload_len = (uint8_t)payload_len;
        p.frame.fcf.src_addr_m = (uint8_t)interfaces[if_id].trans_src_addr_m;
        p.frame.fcf.dest_addr_m = IEEE_802154_LONG_ADDR_M;
        p.frame.fcf.ack_req = 0;
        p.frame.fcf.sec_enb = 0;
        p.frame.fcf.frame_type = IEEE_802154_DATA_FRAME;
        p.frame.fcf.frame_pend = 0;
        p.frame.dest_pan_id = net_if_get_pan_id(if_id);
        uint64_t target_h = NTOHLL(target->uint64);
        memcpy(p.frame.dest_addr, &target_h, 8);
        response = net_if_transceiver_get_set_handler(if_id, SND_PKT, (void *)&p);
    }
    else {
        radio_packet_t p;
        memset(&p, 0, sizeof(radio_packet_t));
        p.data = (uint8_t *) payload;
        p.length = payload_len;
        p.dst = NTOHS(target->uint16[3]);
        response = net_if_transceiver_get_set_handler(if_id, SND_PKT, (void *)&p);
    }


    return (response > payload_len) ? (int)payload_len : (int)response;
}