コード例 #1
0
ファイル: xbee.c プロジェクト: ant9000/RIOT
static int xbee_get(netdev2_t *ndev, netopt_t opt, void *value, size_t max_len)
{
    xbee_t *dev = (xbee_t *)ndev;
    assert(dev);

    switch (opt) {
        case NETOPT_ADDRESS:
            assert(max_len >= IEEE802154_SHORT_ADDRESS_LEN);
            memcpy(value, dev->addr_short, IEEE802154_SHORT_ADDRESS_LEN);
            return IEEE802154_SHORT_ADDRESS_LEN;
        case NETOPT_ADDRESS_LONG:
            assert(max_len >= IEEE802154_LONG_ADDRESS_LEN);
            memcpy(value, dev->addr_long.uint8, IEEE802154_LONG_ADDRESS_LEN);
            return IEEE802154_LONG_ADDRESS_LEN;
        case NETOPT_ADDR_LEN:
        case NETOPT_SRC_LEN:
            if (max_len < sizeof(uint16_t)) {
                return -EOVERFLOW;
            }
            if (dev->addr_flags & XBEE_ADDR_FLAGS_LONG) {
                *((uint16_t *)value) = IEEE802154_LONG_ADDRESS_LEN;
            }
            else {
                *((uint16_t *)value) = IEEE802154_SHORT_ADDRESS_LEN;
            }
            return sizeof(uint16_t);
        case NETOPT_IPV6_IID:
            if (max_len < sizeof(eui64_t)) {
                return -EOVERFLOW;
            }
            if (dev->addr_flags & XBEE_ADDR_FLAGS_LONG) {
                ieee802154_get_iid(value, dev->addr_long.uint8,
                                   IEEE802154_LONG_ADDRESS_LEN);
            }
            else {
                ieee802154_get_iid(value, dev->addr_short,
                                   IEEE802154_SHORT_ADDRESS_LEN);
            }
            return sizeof(eui64_t);
        case NETOPT_CHANNEL:
            return _get_channel(dev, (uint8_t *)value, max_len);
        case NETOPT_MAX_PACKET_SIZE:
            if (max_len < sizeof(uint16_t)) {
                return -EOVERFLOW;
            }
            *((uint16_t *)value) = XBEE_MAX_PAYLOAD_LENGTH;
            return sizeof(uint16_t);
        case NETOPT_NID:
            return _get_panid(dev, (uint8_t *)value, max_len);
        default:
            return -ENOTSUP;
    }
}
コード例 #2
0
ファイル: nrfmin.c プロジェクト: kareem05/RIOT
int _get(ng_netdev_t *dev, netopt_t opt, void *value, size_t max_len)
{
    (void)dev;

    switch (opt) {
        case NETOPT_ADDRESS:
            return _get_address(value, max_len);
        case NETOPT_CHANNEL:
            return _get_channel(value, max_len);
        case NETOPT_NID:
            return _get_pan(value, max_len);
        case NETOPT_TX_POWER:
            return _get_txpower(value, max_len);
        case NETOPT_STATE:
            return _get_state(value, max_len);
        default:
            return -ENOTSUP;
    }
}