예제 #1
0
void mac_helper_devicetable_set(mle_neigh_table_entry_t *entry_temp, protocol_interface_info_entry_t *cur, uint32_t frame_counter, uint8_t keyID)
{
    if (!cur->mac_api) {
        return;
    }

    if (cur->mac_parameters->SecurityEnabled && cur->mac_parameters->mac_default_key_index != keyID) {
        tr_debug("Do not set counter by index %u != %u", cur->mac_parameters->mac_default_key_index, keyID);
        return;
    }

    mlme_device_descriptor_t device_desc;
    mlme_set_t set_req;
    device_desc.FrameCounter = frame_counter;
    device_desc.Exempt = false;
    device_desc.ShortAddress = entry_temp->short_adr;
    memcpy(device_desc.ExtAddress, entry_temp->mac64, 8);
    device_desc.PANId = mac_helper_panid_get(cur);


    set_req.attr = macDeviceTable;
    set_req.attr_index = entry_temp->attribute_index;
    set_req.value_pointer = (void*)&device_desc;
    set_req.value_size = sizeof(mlme_device_descriptor_t);
    tr_debug("Register Device");
    cur->mac_api->mlme_req(cur->mac_api,MLME_SET , &set_req);
}
예제 #2
0
void mac_helper_device_description_write(protocol_interface_info_entry_t *cur, mlme_device_descriptor_t *device_desc, uint8_t *mac64, uint16_t mac16, uint32_t frame_counter, bool exempt)
{
    memcpy(device_desc->ExtAddress, mac64, 8);
    device_desc->ShortAddress = mac16;
    device_desc->PANId = mac_helper_panid_get(cur);
    device_desc->Exempt = exempt;
    device_desc->FrameCounter = frame_counter;
}