Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages

The MAC Core Layer (MCL) abstracts and implements IEEE 802.15.4-2006 compliant behavior for non-beacon enabled and beacon-enabled network support.

Macros

#define MAKE_MAC_BUSY()
 This macro sets the MAC to busy. More...
 
#define MAKE_MAC_NOT_BUSY()
 This macro sets the MAC to not busy. More...
 

Functions

void dispatch_event (uint8_t *event)
 Obtains the message type from the buffer and calls the respective handler. More...
 
void flush_gts_queues (void)
 
void handle_gts_data_req (mcps_data_req_t *data_req, uint8_t *msg)
 
void handle_gts_data_tx_end (void)
 
void handle_gts_sync_loss (void)
 
void init_gts_queues (void)
 
uint8_t mac_add_gts_info (uint8_t *frame_ptr)
 
void mac_build_and_tx_beacon (bool beacon_enabled)
 Builds and transmits the beacon frame. More...
 
bool mac_build_and_tx_data_req (bool expl_poll, bool force_own_long_addr, uint8_t expl_dest_addr_mode, address_field_t *expl_dest_addr, uint16_t expl_dest_pan_id)
 Build and transmits data request command frame. More...
 
static void mac_check_persistence_timer (void)
 
void mac_coord_realignment_command_tx_success (uint8_t tx_status, buffer_t *buf_ptr)
 Continues handling of MLME_START.request (Coordinator realignment) command. More...
 
void mac_gen_mcps_data_conf (buffer_t *buf_ptr, uint8_t status, uint8_t handle, uint32_t timestamp)
 
void mac_gen_mlme_associate_conf (buffer_t *buf_ptr, uint8_t status, uint16_t assoc_short_addr)
 
void mac_gen_mlme_gts_conf (buffer_t *buf_ptr, uint8_t status, gts_char_t gts_char)
 
void mac_gts_table_update (void)
 
void mac_handle_tx_null_data_frame (void)
 
void mac_idle_trans (void)
 Resets the MAC helper variables and transition to idle state. More...
 
void mac_mlme_comm_status (uint8_t status, buffer_t *buf_ptr)
 Creates a Communication Status Indication message to the upper layer. More...
 
void mac_parse_bcn_gts_info (uint8_t gts_count, uint8_t gts_dir, mac_gts_list_t *gts_list_ptr)
 
void mac_prep_disassoc_conf (buffer_t *buf_ptr, uint8_t status)
 Prepares a disassociation confirm message with device address information. More...
 
void mac_process_associate_request (buffer_t *buf_ptr)
 Processes a received association request command frame. More...
 
void mac_process_associate_response (buffer_t *buf_ptr)
 Processing of an associaton reponse command frame. More...
 
void mac_process_beacon_frame (buffer_t *msg)
 Processes received beacon frame. More...
 
void mac_process_beacon_request (buffer_t *buf_ptr)
 Processes a beacon request. More...
 
void mac_process_coord_realign (buffer_t *buf_ptr)
 Processing a coordinator realignment command frame. More...
 
void mac_process_data_frame (buffer_t *buf_ptr)
 Processes data frames. More...
 
void mac_process_data_request (buffer_t *buf_ptr)
 Processes a received data request command frame. More...
 
void mac_process_data_response (void)
 Processes a data response to an MLME-POLL.request. More...
 
void mac_process_disassociate_notification (buffer_t *buf_ptr)
 Process a disassociation notification command. More...
 
void mac_process_gts_request (buffer_t *gts_req)
 
void mac_process_orphan_notification (buffer_t *buf_ptr)
 Handles an orphan notification. More...
 
void mac_process_orphan_realign (buffer_t *buf_ptr)
 Processing a coordinator realignment command frame during Orphan scan. More...
 
void mac_process_tal_data_ind (uint8_t *msg)
 Depending on received frame the appropriate function is called. More...
 
void mac_scan_send_complete (retval_t status)
 Continue scanning after the completion of frame transmission. More...
 
void mac_sleep_trans (void)
 Puts the radio to sleep if this is allowed. More...
 
void mac_start_beacon_timer (void)
 Starts the beacon timer. More...
 
void mac_start_missed_beacon_timer (void)
 
void mac_start_persistence_timer (void)
 
void mac_sync_loss (uint8_t loss_reason)
 Function to initiate MLME-SYNC-LOSS.indication to NHLE. More...
 
void mac_t_assocresponsetime_cb (void *callback_parameter)
 
void mac_t_gts_cb (void *callback_parameter)
 
void mac_t_poll_wait_time_cb (void *callback_parameter)
 T_Poll_Wait_Time timer callback. More...
 
void mac_t_response_wait_cb (void *callback_parameter)
 Handle T_Poll_Wait_Time timer after successful transmission of an association request frame and before sending out the subsequent data request frame. More...
 
void mac_t_start_inactive_device_cb (void *callback_parameter)
 
void mac_t_tracking_beacons_cb (void *callback_parameter)
 
void mac_trx_init_sleep (void)
 MAC function to put the radio to sleep mode. More...
 
void mac_trx_wakeup (void)
 MAC function to wake-up the radio from sleep state. More...
 
bool mac_tx_coord_realignment_command (frame_msgtype_t cmd_type, buffer_t *buf_ptr, uint16_t new_panid, uint8_t new_channel, uint8_t new_page)
 Sends a coordinator realignment command frame. More...
 
void mac_tx_gts_data (queue_t *gts_data)
 
void mac_tx_pending_bc_data (void)
 
void reset_gts_expiry (mac_pan_gts_mgmt_t *mac_pan_gts_entry)
 
void reset_gts_globals (void)
 
retval_t set_tal_pib_internal (uint8_t attribute, pib_value_t *attribute_value)
 Wakes-up the radio and sets the corresponding TAL PIB attribute. More...
 

#define MAKE_MAC_BUSY ( )
#define MAKE_MAC_NOT_BUSY ( )
Value:
do { \
mac_busy = false; \
} \
while (0)
bool mac_busy
MAC busy state, indicates whether MAC can process any request from NHLE.
Definition: mac.c:192

This macro sets the MAC to not busy.

Referenced by mac_process_data_response(), mac_t_poll_wait_time_cb(), tal_ed_end_cb(), and tal_tx_frame_done_cb().

void dispatch_event ( uint8_t *  event)

Obtains the message type from the buffer and calls the respective handler.

This function decodes all events/messages and calls the appropriate handler.

Parameters
eventPointer to the buffer header whose body part holds the message type and message elemnets

References Assert, bmm_buffer_free(), BMM_BUFFER_POINTER, CMD_ID_OCTET, LAST_MESSAGE, and PGM_READ_WORD.

Referenced by mac_task(), and wpan_task().

void flush_gts_queues ( void  )

References MAX_GTS_ON_PANC, and qmm_queue_flush().

Referenced by flush_queues().

void init_gts_queues ( void  )
void mac_build_and_tx_beacon ( bool  beacon_enabled)

Builds and transmits the beacon frame.

This function is called to build a beacon frame. For beaconless network this function also transmits the generated beacon frame.

Parameters
beacon_enabledFlag indicating the mode of beacon transmission
beacon_buffer_headerFor build without beacon support only: Pointer to buffer of beacon frame to be transmitted in nonbeacon network.

References ASSOC_PERMIT_BIT_POS, BATT_LIFE_EXT_BIT_POS, beacon_buffer, BEACON_MESSAGE, BEACON_PAYLOAD_LEN, BMM_BUFFER_POINTER, broadcast_q, frame_info_tag::buffer_header, CCPU_ENDIAN_TO_LE16, convert_16_bit_to_byte_array(), convert_64_bit_to_byte_array(), convert_spec_16_bit_to_byte_array(), CSMA_UNSLOTTED, mcps_data_req_tag::DstPANId, FCF_FRAME_PENDING, FCF_FRAME_VERSION_2006, FCF_FRAMETYPE_BEACON, FCF_LONG_ADDR, FCF_SECURITY_ENABLED, FCF_SET_FRAMETYPE, FCF_SET_SOURCE_ADDR_MODE, FCF_SHORT_ADDR, FINAL_CAP_SLOT_DEFAULT, indirect_data_q, LARGE_BUFFER_SIZE, mac_add_gts_info(), mac_pib_tag::mac_AssociationPermit, mac_beacon_payload, mac_pib_tag::mac_BeaconPayloadLength, mac_pib_tag::mac_BSN, mac_buffer_add_pending(), MAC_COORDINATOR, mac_final_cap_slot, mac_gts_table_update(), MAC_NO_SHORT_ADDR_VALUE, MAC_PAN_COORD_STARTED, mac_pib, mac_state, MAC_SUCCESS, MAKE_MAC_BUSY, frame_info_tag::mpdu, mcps_data_req_tag::msduLength, frame_info_tag::msg_type, NON_BEACON_NWK, PAN_COORD_BIT_POS, queue_tag::size, mcps_data_req_tag::SrcAddrMode, tal_pib, and tal_tx_frame().

Referenced by mac_process_beacon_request(), mac_start_beacon_timer(), and mac_t_prepare_beacon_cb().

bool mac_build_and_tx_data_req ( bool  expl_poll,
bool  force_own_long_addr,
uint8_t  expl_dest_addr_mode,
address_field_t expl_dest_addr,
uint16_t  expl_dest_pan_id 
)

Build and transmits data request command frame.

This function builds and transmits a data request command frame.

Parameters
expl_pollData request due to explicit MLME poll request
force_own_long_addrForces the usage of the Extended Address as Source Address. This a allows for implicitly poll for pending data at the coordinator if the Extended Address was used in the Beacon frame.
expl_dest_addr_modeMode of subsequent destination address to be used explicitly (0/2/3). 0: No explicit destination address attached, use either macCoordShortAddress or macCoordExtendedAddress 2: Use explicitly attached address in parameter expl_dest_addr as destination address as short address 3: Use explicitly attached address in parameter expl_dest_addr as destination address as extended address
expl_dest_addrExplicitly attached destination address for data request frame. This is to be treated as either not present, short or extended address, depending on parameter expl_dest_addr_mode.
expl_dest_pan_idExplicitly attached destination PAN-Id (Coordinator PAN-Id) for data request frame. This is to be treated only as present, depending on parameter expl_dest_addr_mode.
Returns
True if data request command frame was created and sent to the TAL successfully, false otherwise.

References bmm_buffer_alloc(), bmm_buffer_free(), BMM_BUFFER_POINTER, BROADCAST, frame_info_tag::buffer_header, CCPU_ENDIAN_TO_LE16, convert_16_bit_to_byte_array(), convert_64_bit_to_byte_array(), convert_spec_16_bit_to_byte_array(), CSMA_SLOTTED, CSMA_UNSLOTTED, DATA_REQ_PAYLOAD_LEN, DATAREQUEST, DATAREQUEST_IMPL_POLL, FCF_ACK_REQUEST, FCF_FRAMETYPE_MAC_CMD, FCF_LONG_ADDR, FCF_NO_ADDR, FCF_PAN_ID_COMPRESSION, FCF_SET_DEST_ADDR_MODE, FCF_SET_FRAMETYPE, FCF_SET_SOURCE_ADDR_MODE, FCF_SHORT_ADDR, LARGE_BUFFER_SIZE, address_field_t::long_address, MAC_ASSOCIATED, mac_pib_tag::mac_CoordExtendedAddress, MAC_COORDINATOR, mac_pib_tag::mac_CoordShortAddress, mac_pib_tag::mac_DSN, MAC_IDLE, MAC_NO_SHORT_ADDR_VALUE, mac_pib, MAC_START_REQUEST_CONFIRM, mac_state, MAC_SUCCESS, MAC_SYNC_BEFORE_ASSOC, mac_sync_state, MAKE_MAC_BUSY, frame_info_tag::mpdu, frame_info_tag::msg_type, NON_BEACON_NWK, address_field_t::short_address, tal_pib, and tal_tx_frame().

Referenced by mac_process_beacon_frame(), mac_process_data_frame(), mac_t_response_wait_cb(), and mlme_poll_request().

static void mac_check_persistence_timer ( void  )
inlinestatic
void mac_coord_realignment_command_tx_success ( uint8_t  tx_status,
buffer_t buf_ptr 
)

Continues handling of MLME_START.request (Coordinator realignment) command.

This function is called once the coordinator realignment command is sent out to continue the handling of the MLME_START.request command.

Parameters
tx_statusStatus of the coordinator realignment command transmission
buf_ptrBuffer for start confirmation

References Assert, mlme_start_req_tag::BeaconOrder, broadcast_q, mlme_start_req_tag::ChannelPage, gen_mlme_start_conf(), mlme_start_req_tag::LogicalChannel, MAC_INVALID_PARAMETER, mac_sleep_trans(), mac_start_beacon_timer(), MAC_SUCCESS, mac_tx_pending_bc_data(), macBattLifeExt, macBeaconOrder, macPANId, macSuperframeOrder, NON_BEACON_NWK, mlme_start_req_tag::PANId, phyCurrentChannel, phyCurrentPage, set_tal_pib_internal(), queue_tag::size, mlme_start_req_tag::SuperframeOrder, and tal_pib.

Referenced by mac_process_tal_tx_status().

void mac_idle_trans ( void  )

Resets the MAC helper variables and transition to idle state.

This function sets the MAC to idle state and resets MAC helper variables

References Assert, mac_sleep_trans(), mac_soft_reset(), MAC_SUCCESS, mac_trx_wakeup(), macPANId, macPANId_def, macShortAddress, macShortAddress_def, and set_tal_pib_internal().

Referenced by mac_process_tal_data_ind(), mac_process_tal_tx_status(), and process_data_ind_not_transient().

void mac_prep_disassoc_conf ( buffer_t buf,
uint8_t  status 
)

Prepares a disassociation confirm message with device address information.

This functions prepares a disassociation confirm message in case the device address information needs to be extracted.

Parameters
bufBuffer for sending MLME disassociate confirm message to NHLE
statusStatus of disassociation

References BMM_BUFFER_POINTER, BROADCAST, CCPU_ENDIAN_TO_LE16, convert_byte_array_to_16_bit(), convert_byte_array_to_64_bit(), FCF_2_DEST_ADDR_OFFSET, FCF_LONG_ADDR, FCF_SHORT_ADDR, mac_pib_tag::mac_CoordExtendedAddress, MAC_COORDINATOR, mac_pib_tag::mac_CoordShortAddress, mac_gen_mlme_disassociate_conf(), MAC_NO_SHORT_ADDR_VALUE, MAC_PAN_COORD_STARTED, mac_pib, mac_state, frame_info_tag::mpdu, PL_POS_DST_ADDR_START, PL_POS_FCF_2, and tal_pib.

Referenced by handle_exp_persistence_timer(), and mac_process_tal_tx_status().

void mac_process_associate_request ( buffer_t assoc_req)

Processes a received association request command frame.

This function will process a received association request command frame and generates a MLME associate indication to the NHLE.

Parameters
assoc_reqSpecifies a pointer to the received association request frame

References ADDR_COPY_DST_SRC_64, frame_payload_t::assoc_req_data, bmm_buffer_free(), BMM_BUFFER_POINTER, mlme_associate_ind_tag::CapabilityInformation, mlme_associate_ind_tag::cmdcode, mlme_associate_ind_tag::DeviceAddress, address_field_t::long_address, mac_pib_tag::mac_AssociationPermit, mac_nhle_q, mac_parse_data, parse_tag::mac_payload_data, mac_pib, MLME_ASSOCIATE_INDICATION, qmm_queue_append(), and parse_tag::src_addr.

Referenced by mac_process_tal_data_ind(), and process_data_ind_not_transient().

void mac_process_beacon_frame ( buffer_t beacon)

Processes received beacon frame.

This function processes a received beacon frame. When the system is scanning it records PAN descriptor information contained in the beacon. These PAN descriptors will be reported to the next higher layer via MLME_SCAN.confirm. Also this routine constructs the MLME_BEACON_NOTIFY.indication. Additionally when a device is synced with the coordinator, it tracks beacon frames, checks whether the coordinator does have pending data and will initiate the transmission of a data request frame. The routine uses global "parse_data" structure. The PAN descriptors are stored in the mlme_scan_conf_t structure.

Parameters
beaconPointer to the buffer in which the beacon was received

References wpan_addr_spec_tag::Addr, ADDR_COPY_DST_SRC_16, ADDR_COPY_DST_SRC_64, mlme_beacon_notify_ind_tag::AddrList, wpan_addr_spec_tag::AddrMode, aMaxSIFSFrameSize, Assert, aUnitBackoffPeriod, frame_payload_t::beacon_data, beacon_payload, mac_beacon_payload_tag::beacon_payload_len, bmm_buffer_free(), BMM_BUFFER_POINTER, mlme_beacon_notify_ind_tag::BSN, wpan_pandescriptor_tag::ChannelPage, mlme_beacon_notify_ind_tag::cmdcode, convert_byte_array_to_16_bit(), convert_byte_array_to_64_bit(), wpan_pandescriptor_tag::CoordAddrSpec, parse_tag::fcf, FCF_FRAME_PENDING, FCF_SHORT_ADDR, FUNC_PTR, GET_BEACON_ORDER, GET_FINAL_CAP, GET_GTS_PERMIT, GET_SUPERFRAME_ORDER, GTS_ALLOCATE, mac_beacon_payload_tag::gts_direction, mac_beacon_payload_tag::gts_list, mac_beacon_payload_tag::gts_spec, GTS_STATE_IDLE, GTS_STATE_REQ_SENT, gts_char_tag::GtsCharType, gts_char_tag::GtsDirection, gts_char_tag::GtsLength, wpan_pandescriptor_tag::GTSPermit, wpan_pandescriptor_tag::LinkQuality, wpan_pandescriptor_tag::LogicalChannel, address_field_t::long_address, mac_pib_tag::mac_AutoRequest, mac_pib_tag::mac_BattLifeExtPeriods, mac_bc_data_indicated, mac_build_and_tx_data_req(), mac_conf_buf_ptr, mac_dev_gts_table, mac_final_cap_slot, mac_gen_mlme_gts_conf(), mac_pib_tag::mac_GTSPermit, mac_pib_tag::mac_MaxFrameTotalWaitTime, mac_nhle_q, MAC_NO_DATA, MAC_PAN_COORD_STARTED, mac_parse_bcn_gts_info(), mac_parse_data, parse_tag::mac_payload_data, mac_pib, MAC_POLL_IDLE, mac_poll_state, MAC_SCAN_ACTIVE, MAC_SCAN_IDLE, MAC_SCAN_PASSIVE, mac_scan_state, mac_state, MAC_SUCCESS, MAC_SYNC_NEVER, mac_sync_state, mac_t_wait_for_bc_time_cb(), macBeaconOrder, macMinLIFSPeriod_def, macMinSIFSPeriod_def, macSuperframeOrder, MAX_GTS_ON_DEV, MAX_PANDESCRIPTORS, MLME_BEACON_NOTIFY_INDICATION, parse_tag::mpdu_length, NON_BEACON_NWK, NUM_LONG_PEND_ADDR, NUM_SHORT_PEND_ADDR, pal_timer_start(), mlme_beacon_notify_ind_tag::PANDescriptor, wpan_addr_spec_tag::PANId, mlme_beacon_notify_ind_tag::PendAddrSpec, mac_beacon_payload_tag::pending_addr_list, mac_beacon_payload_tag::pending_addr_spec, PHY_OVERHEAD, parse_tag::ppdu_link_quality, qmm_queue_append(), gts_char_tag::Reserved, mlme_scan_conf_tag::ResultListSize, mlme_scan_conf_tag::scan_result_list, mlme_beacon_notify_ind_tag::sdu, mlme_beacon_notify_ind_tag::sduLength, parse_tag::sequence_number, set_tal_pib_internal(), address_field_t::short_address, parse_tag::src_addr, parse_tag::src_addr_mode, parse_tag::src_panid, mac_beacon_payload_tag::superframe_spec, wpan_pandescriptor_tag::SuperframeSpec, SYMBOLS_PER_OCTET, T_Poll_Wait_Time, TAL_CONVERT_SYMBOLS_TO_US, tal_pib, parse_tag::time_stamp, TIMEOUT_RELATIVE, wpan_pandescriptor_tag::TimeStamp, and WPAN_ADDRMODE_SHORT.

Referenced by process_data_ind_not_transient(), and process_data_ind_scanning().

void mac_process_beacon_request ( buffer_t msg)

Processes a beacon request.

This function is called in case a beacon request frame has been received by a coordinator. In a nonbeacon-enabled PAN the generation of a beacon frame using CSMA-CA is initiated. In a beacon-enabled PAN no extra beacon frame will be transmitted apart from the standard beacon frames.

Parameters
msgPointer to the buffer in which the beaocn request was received

References bmm_buffer_free(), mac_build_and_tx_beacon(), NON_BEACON_NWK, and tal_pib.

Referenced by mac_process_tal_data_ind(), and process_data_ind_not_transient().

void mac_process_coord_realign ( buffer_t ind)

Processing a coordinator realignment command frame.

This function processes a coordinator realignment command frame received from the coordinator (while NOT being in the middle of an Orphan scan, but rather after initiation of a start request primitive from the coordinator indicating realingment. The PAN ID, coord. short address, logical channel, and the device's new short address will be written to the PIB.

Parameters
indFrame reception buffer

References Assert, bmm_buffer_free(), BROADCAST, mac_coord_realign_tag::channel_page, frame_payload_t::coord_realign_data, parse_tag::fcf, FCF_FRAME_VERSION_2006, mac_coord_realign_tag::logical_channel, mac_pib_tag::mac_CoordShortAddress, mac_parse_data, parse_tag::mac_payload_data, mac_pib, MAC_REALIGNMENT, MAC_SUCCESS, mac_sync_loss(), macPANId, macShortAddress, mac_coord_realign_tag::pan_id, phyCurrentChannel, phyCurrentPage, set_tal_pib_internal(), and mac_coord_realign_tag::short_addr.

Referenced by mac_process_tal_data_ind(), and process_data_ind_not_transient().

void mac_process_data_response ( void  )

Processes a data response to an MLME-POLL.request.

This function processes a data response to an MLME-POLL.request. Our coordinator has responded with a data frame. It is checked whether any data has been received, and the appropriate MLME-POLL.confirm message is constructed.

References Assert, FCF_FRAMETYPE_BEACON, FCF_FRAMETYPE_DATA, parse_tag::frame_type, gen_mlme_poll_conf(), mac_conf_buf_ptr, MAC_NO_DATA, mac_parse_data, parse_tag::mac_payload_length, MAC_POLL_EXPLICIT, MAC_POLL_IDLE, mac_poll_state, MAC_SUCCESS, MAKE_MAC_NOT_BUSY, pal_is_timer_running(), pal_timer_stop(), and T_Poll_Wait_Time.

Referenced by mac_process_tal_data_ind().

void mac_process_disassociate_notification ( buffer_t msg)
void mac_process_orphan_notification ( buffer_t msg)

Handles an orphan notification.

This function processes an incoming orphan notification command. A PAN coordinator gets to this function through a TAL data indication message.

Parameters
msgFrame reception buffer

References ADDR_COPY_DST_SRC_64, BMM_BUFFER_POINTER, mlme_orphan_ind_tag::cmdcode, address_field_t::long_address, mac_nhle_q, mac_parse_data, MLME_ORPHAN_INDICATION, mlme_orphan_ind_tag::OrphanAddress, qmm_queue_append(), and parse_tag::src_addr.

Referenced by mac_process_tal_data_ind(), and process_data_ind_not_transient().

void mac_process_orphan_realign ( buffer_t buf_ptr)

Processing a coordinator realignment command frame during Orphan scan.

This function processes a coordinator realignment command frame received as a response to the reception of an orphan notification command frame (i.e. while being in the middle of an orphan scan procedure). The PAN ID, coord. short address, logical channel, and the device's new short address will be written to the PIB.

Parameters
indFrame reception buffer

References Assert, bmm_buffer_free(), BMM_BUFFER_POINTER, BROADCAST, mac_coord_realign_tag::channel_page, mlme_scan_conf_tag::cmdcode, frame_payload_t::coord_realign_data, parse_tag::fcf, FCF_FRAME_VERSION_2006, mac_coord_realign_tag::logical_channel, mac_conf_buf_ptr, mac_pib_tag::mac_CoordShortAddress, mac_nhle_q, mac_parse_data, parse_tag::mac_payload_data, mac_pib, mac_scan_cmd_buf_ptr, MAC_SCAN_IDLE, mac_scan_state, mac_sleep_trans(), MAC_SUCCESS, macPANId, macShortAddress, MLME_SCAN_CONFIRM, MLME_SCAN_TYPE_ORPHAN, mac_coord_realign_tag::pan_id, phyCurrentChannel, phyCurrentPage, qmm_queue_append(), mlme_scan_conf_tag::ResultListSize, scan_set_complete(), mlme_scan_conf_tag::ScanType, set_tal_pib_internal(), mac_coord_realign_tag::short_addr, mlme_scan_conf_tag::status, and mlme_scan_conf_tag::UnscannedChannels.

Referenced by process_data_ind_scanning().

void mac_scan_send_complete ( retval_t  status)

Continue scanning after the completion of frame transmission.

This functions continues the corresponding scaning depending on status from the transmission of a beacon request or orphan notification frame.

Parameters
statusStatus of transmission

References Assert, FUNC_PTR, MAC_CALCULATE_SYMBOL_TIME_SCANDURATION, mac_conf_buf_ptr, mac_pib_tag::mac_DSN, mac_pib, mac_pib_tag::mac_ResponseWaitTime, MAC_SCAN_ACTIVE, mac_scan_state, MAC_SUCCESS, mac_t_scan_duration_cb(), pal_timer_start(), scan_curr_channel, scan_duration, scan_proceed(), scan_type, T_Scan_Duration, TAL_CONVERT_SYMBOLS_TO_US, and TIMEOUT_RELATIVE.

Referenced by tal_tx_frame_done_cb().

void mac_start_beacon_timer ( void  )

Starts the beacon timer.

This function is called during MLME_START.request operation to start the timers for beacon transmission in case the network is of type beacon enabled, or to start the timer to count the transcation presistence time of indirect data in case the network is nonbeacon enabled.

The timers started for a beacon enabled and nonbeacon enabled networks are different with different timeout values.

In case of a beacon enabled network two timers are started. The first timer prepares the beacon and second timer sends the beacon. In case of the nonbeacon enabled network, only a single timer is started with timeout as the beacon interval.

For a beacon enabled network the first beacon of the network is prepared and sent in this function and the subsequent beacons are sent in the callback function of the timer.

References mac_build_and_tx_beacon(), mac_t_beacon_cb(), macBeaconTxTime, pal_get_current_time(), set_tal_pib_internal(), TAL_CONVERT_US_TO_SYMBOLS, TAL_GET_BEACON_INTERVAL_TIME, tal_pib, and tal_sub_time_symbols().

Referenced by mac_coord_realignment_command_tx_success(), and mlme_start_request().

void mac_sync_loss ( uint8_t  loss_reason)
void mac_t_poll_wait_time_cb ( void *  callback_parameter)

T_Poll_Wait_Time timer callback.

This function implements the T_Poll_Wait_Time timer callback. If a poll request is pending, a mlme-poll-confirm is generated.

Parameters
callback_parameterCallback parameter

References gen_mlme_poll_conf(), mac_conf_buf_ptr, MAC_NO_DATA, MAC_POLL_EXPLICIT, MAC_POLL_IDLE, mac_poll_state, and MAKE_MAC_NOT_BUSY.

Referenced by mac_process_tal_tx_status().

void mac_t_response_wait_cb ( void *  callback_parameter)

Handle T_Poll_Wait_Time timer after successful transmission of an association request frame and before sending out the subsequent data request frame.

Parameters
callback_parameterCallback parameter.

References Assert, FUNC_PTR, INVALID_SHORT_ADDRESS, mac_build_and_tx_data_req(), MAC_CHANNEL_ACCESS_FAILURE, mac_conf_buf_ptr, mac_gen_mlme_associate_conf(), mac_pib, mac_pib_tag::mac_ResponseWaitTime, MAC_SUCCESS, mac_t_assocresponsetime_cb(), pal_timer_start(), T_Poll_Wait_Time, TAL_CONVERT_SYMBOLS_TO_US, and TIMEOUT_RELATIVE.

Referenced by mac_process_tal_tx_status().

void mac_t_start_inactive_device_cb ( void *  callback_parameter)
void mac_t_tracking_beacons_cb ( void *  callback_parameter)
void mac_trx_init_sleep ( void  )
bool mac_tx_coord_realignment_command ( frame_msgtype_t  cmd_type,
buffer_t buf_ptr,
uint16_t  new_panid,
uint8_t  new_channel,
uint8_t  new_page 
)

Sends a coordinator realignment command frame.

This function is called either in response to the reception of an orphan notification command from a device (cmd_type = ORPHANREALIGNMENT), or gratuitously whenever the PAN parameters are about to be changed (cmd_type = COORDINATORREALIGNMENT). In the first case, the paramater mor contains a pointer to the respective MLME_ORPHAN.response message, while in the latter case this parameter is unused, and can be passed as NULL.

Parameters
cmd_typeDetermines directed or broadcast mode
buf_ptrPointer to the buffer, using which coord_realignment_command to be sent
new_panidContains the new PAN-ID in case there is a network realignment
new_channelContains the new channel in case there is a network realignment
new_pageContains the new channel page in case there is a network realignment
Returns
True if coord_realignment_command is sent successfully, false otherwise

References BMM_BUFFER_POINTER, BROADCAST, broadcast_q, frame_info_tag::buffer_header, convert_16_bit_to_byte_array(), convert_64_bit_to_byte_array(), convert_spec_16_bit_to_byte_array(), COORD_REALIGN_PAYLOAD_LEN, COORDINATORREALIGNMENT, CSMA_SLOTTED, CSMA_UNSLOTTED, FCF_ACK_REQUEST, FCF_FRAME_VERSION_2006, FCF_FRAMETYPE_MAC_CMD, FCF_LONG_ADDR, FCF_SET_DEST_ADDR_MODE, FCF_SET_FRAMETYPE, FCF_SET_SOURCE_ADDR_MODE, FCF_SHORT_ADDR, LARGE_BUFFER_SIZE, mac_pib_tag::mac_DSN, mac_pib, MAC_SUCCESS, MAKE_MAC_BUSY, frame_info_tag::mpdu, frame_info_tag::msg_type, NON_BEACON_NWK, mlme_orphan_resp_tag::OrphanAddress, ORPHANREALIGNMENT, qmm_queue_append(), QUEUE_FULL, mlme_orphan_resp_tag::ShortAddress, tal_pib, and tal_tx_frame().

Referenced by mlme_orphan_response(), and mlme_start_request().

void reset_gts_expiry ( mac_pan_gts_mgmt_t mac_pan_gts_entry)
retval_t set_tal_pib_internal ( uint8_t  attribute,
pib_value_t attribute_value 
)