MAC Layer Abstraction for AT86RFx implementation.
Copyright (c) 2018 - 2022 Microchip Technology Inc. and its subsidiaries.
#include <string.h>
#include <stdbool.h>
#include <trx_access.h>
#include "miwi_config.h"
#include "miwi_config_p2p.h"
#include "delay.h"
#include "sal.h"
#include "phy.h"
#include "mimac_at86rf.h"
#include "pdsDataServer.h"
Functions | |
bool | DataDecrypt (uint8_t *Payload, uint8_t *PayloadLen, uint8_t *SourceIEEEAddress, API_UINT32_UNION FrameCounter, uint8_t FrameControl) |
bool | DataEncrypt (uint8_t *Payloadinfo, uint8_t *Payload_len, API_UINT32_UNION FrameCounter, uint8_t FrameControl) |
void | mic_generator (uint8_t *Payloadinfo, uint8_t len, uint8_t frame_control, API_UINT32_UNION FrameCounter, uint8_t *SourceIEEEAddress) |
uint8_t | MiMAC_ChannelAssessment (uint8_t AssessmentMode) |
void | MiMAC_DiscardPacket (void) |
uint32_t | MiMAC_GetPHYChannelInfo (void) |
bool | MiMAC_Init (MACINIT_PARAM initValue) |
bool | MiMAC_PowerState (INPUT uint8_t PowerState) |
bool | MiMAC_ReceivedPacket (void) |
bool | MiMAC_SendPacket (MAC_TRANS_PARAM transParam, uint8_t *MACPayload, uint8_t MACPayloadLen, uint8_t msghandle, DataConf_callback_t ConfCallback) |
bool | MiMAC_Set (mac_set_params_t id, uint8_t *value) |
bool | MiMAC_SetAltAddress (uint8_t *Address, uint8_t *PanId) |
uint32_t | MiMAC_SymbolToTicks (uint32_t symbols) |
void | MiMAC_Task (void) |
void | PHY_DataConf (uint8_t status) |
bool | validate_mic (void) |
Variables | |
uint8_t | addr [8] = {0xda , 0x98 , 0x22 , 0xfe , 0xff , 0xa3 , 0x04 , 0x00} |
uint8_t | BankIndex = 0xFF |
uint8_t | calculated_mic_values [AES_BLOCKSIZE/4] |
uint8_t | CBC_mic [16] |
uint8_t | CTR_mic [16] |
bool | dataConfAvailable = 0 |
DataConf_callback_t | dataConfCallback = NULL |
uint8_t | dataHandle = 0 |
uint8_t * | dataPointer = NULL |
miwi_status_t | dataStatus |
uint8_t | final_mic_value [16] |
uint8_t | IEEESeqNum |
uint8_t | InitVect_in [16] |
API_UINT16_UNION | MAC_PANID |
uint8_t | MACCurrentChannel |
MACINIT_PARAM | MACInitParams |
const uint8_t | myKeySequenceNumber = KEY_SEQUENCE_NUMBER |
API_UINT16_UNION | myNetworkAddress |
const char | mySecurityKey [16] |
API_UINT32_UNION | OutgoingFrameCounter |
uint8_t | packet [128] |
uint8_t | received_mic_values [AES_BLOCKSIZE/4] |
bool DataDecrypt | ( | uint8_t * | Payload, |
uint8_t * | PayloadLen, | ||
uint8_t * | SourceIEEEAddress, | ||
API_UINT32_UNION | FrameCounter, | ||
uint8_t | FrameControl | ||
) |
References CALC_SEC_PAYLOAD_SIZE, CBC_mic, CTR_mic, final_mic_value, i, mic_generator(), mySecurityKey, PHY_EncryptReq(), RX_BUFFER_SIZE, SECURITY_LEVEL, API_UINT32_UNION::v, and validate_mic().
Referenced by MiMAC_ReceivedPacket().
bool DataEncrypt | ( | uint8_t * | Payloadinfo, |
uint8_t * | Payload_len, | ||
API_UINT32_UNION | FrameCounter, | ||
uint8_t | FrameControl | ||
) |
References CALC_SEC_PAYLOAD_SIZE, CBC_mic, final_mic_value, i, mic_generator(), mySecurityKey, MACINIT_PARAM::PAddress, PHY_EncryptReq(), SECURITY_LEVEL, TX_BUFFER_SIZE, and API_UINT32_UNION::v.
Referenced by MiMAC_SendPacket().
void mic_generator | ( | uint8_t * | Payloadinfo, |
uint8_t | len, | ||
uint8_t | frame_control, | ||
API_UINT32_UNION | FrameCounter, | ||
uint8_t * | SourceIEEEAddress | ||
) |
References CBC_mic, i, InitVect_in, mySecurityKey, PHY_EncryptReq(), SECURITY_LEVEL, and API_UINT32_UNION::v.
Referenced by DataDecrypt(), and DataEncrypt().
uint8_t MiMAC_ChannelAssessment | ( | uint8_t | AssessmentMode | ) |
References CHANNEL_ASSESSMENT_ENERGY_DETECT, and PHY_EdReq().
void MiMAC_DiscardPacket | ( | void | ) |
References BANK_SIZE, BankIndex, RxBuffer_t::PayloadLen, and RxBuffer.
Referenced by MiMAC_ReceivedPacket(), and P2PTasks().
uint32_t MiMAC_GetPHYChannelInfo | ( | void | ) |
References FULL_CHANNEL_MAP.
bool MiMAC_Init | ( | MACINIT_PARAM | initValue | ) |
References MACINIT_PARAM::actionFlags, BANK_SIZE, MACINIT_PARAM::bits, FRAME_COUNTER_UPDATE_INTERVAL, i, IEEESeqNum, MACINIT_PARAM::PAddress, RxBuffer_t::PayloadLen, PDS_OUTGOING_FRAME_COUNTER_ID, PDS_Restore(), PDS_Store(), PHY_Init(), PHY_RandomReq(), PHY_SetIEEEAddr(), PHY_SetRxState(), RxBuffer, and API_UINT32_UNION::Val.
Referenced by MiApp_ProtocolInit().
References PHY_Sleep(), PHY_Wakeup(), POWER_STATE_DEEP_SLEEP, and POWER_STATE_OPERATE.
Referenced by P2PTasks().
bool MiMAC_ReceivedPacket | ( | void | ) |
References __CONNECTION_ENTRY::Address, MAC_RECEIVED_PACKET::altSourceAddress, BANK_SIZE, BankIndex, __CONNECTION_STATUS::bits, MAC_RECEIVED_PACKET::bits, CONNECTION_SIZE, __defaultParametersRomOrRam::ConnectionTable, DataDecrypt(), defaultParamsRomOrRam, MAC_RECEIVED_PACKET::flags, i, IncomingFrameCounter, isSameAddress(), __CONNECTION_STATUS::_CONNECTION_STAUTS_bits::isValid, MAC_RECEIVED_PACKET::LQIValue, MACRxPacket, MiMAC_DiscardPacket(), PACKET_TYPE_COMMAND, PACKET_TYPE_DATA, PACKET_TYPE_RESERVE, MAC_RECEIVED_PACKET::Payload, RxBuffer_t::Payload, MAC_RECEIVED_PACKET::PayloadLen, RxBuffer_t::PayloadLen, received_mic_values, MAC_RECEIVED_PACKET::RSSIValue, RxBuffer, MAC_RECEIVED_PACKET::SourceAddress, MAC_RECEIVED_PACKET::SourcePANID, __CONNECTION_ENTRY::status, API_UINT32_UNION::v, API_UINT16_UNION::v, API_UINT32_UNION::Val, API_UINT16_UNION::Val, and MAC_RECEIVED_PACKET::Val.
Referenced by P2PTasks().
bool MiMAC_SendPacket | ( | MAC_TRANS_PARAM | transParam, |
uint8_t * | MACPayload, | ||
uint8_t | MACPayloadLen, | ||
uint8_t | msghandle, | ||
DataConf_callback_t | ConfCallback | ||
) |
References MAC_TRANS_PARAM::altDestAddr, MAC_TRANS_PARAM::altSrcAddr, MAC_TRANS_PARAM::bits, PHY_DataReq_t::confirmCallback, PHY_DataReq_t::data, dataConfCallback, DataEncrypt(), dataHandle, dataPointer, MAC_TRANS_PARAM::DestAddress, MAC_TRANS_PARAM::DestPANID, final_mic_value, MAC_TRANS_PARAM::flags, i, IEEESeqNum, myKeySequenceNumber, packet, PACKET_TYPE_COMMAND, PACKET_TYPE_DATA, PACKET_TYPE_RESERVE, MACINIT_PARAM::PAddress, PDS_OUTGOING_FRAME_COUNTER_ID, PDS_Store(), PHY_DataConf(), PHY_DataReq(), PHY_DataReq_t::polledConfirmation, API_UINT32_UNION::v, API_UINT16_UNION::v, API_UINT32_UNION::Val, and API_UINT16_UNION::Val.
Referenced by P2PTasks().
bool MiMAC_Set | ( | mac_set_params_t | id, |
uint8_t * | value | ||
) |
References MAC_CHANNEL, MACCurrentChannel, and PHY_SetChannel().
Referenced by MiApp_Set().
bool MiMAC_SetAltAddress | ( | uint8_t * | Address, |
uint8_t * | PanId | ||
) |
References PHY_SetPanId(), PHY_SetShortAddr(), API_UINT16_UNION::v, and API_UINT16_UNION::Val.
Referenced by frameParse(), MiApp_ProtocolInit(), and MiApp_StartConnection().
uint32_t MiMAC_SymbolToTicks | ( | uint32_t | symbols | ) |
References SYMBOLS_TO_TICKS.
Referenced by P2PTasks().
void MiMAC_Task | ( | void | ) |
References dataConfAvailable, dataConfCallback, dataHandle, dataPointer, dataStatus, and PHY_TaskHandler().
Referenced by P2PTasks().
void PHY_DataConf | ( | uint8_t | status | ) |
References dataConfAvailable, and dataStatus.
Referenced by MiMAC_SendPacket().
bool validate_mic | ( | void | ) |
References final_mic_value, and received_mic_values.
Referenced by DataDecrypt().
uint8_t addr[8] = {0xda , 0x98 , 0x22 , 0xfe , 0xff , 0xa3 , 0x04 , 0x00} |
Referenced by _spi_check_config().
uint8_t BankIndex = 0xFF |
Referenced by MiMAC_DiscardPacket(), and MiMAC_ReceivedPacket().
uint8_t calculated_mic_values[AES_BLOCKSIZE/4] |
uint8_t CBC_mic[16] |
Referenced by DataDecrypt(), DataEncrypt(), and mic_generator().
uint8_t CTR_mic[16] |
Referenced by DataDecrypt().
bool dataConfAvailable = 0 |
Referenced by MiMAC_Task(), and PHY_DataConf().
DataConf_callback_t dataConfCallback = NULL |
Referenced by MiMAC_SendPacket(), and MiMAC_Task().
uint8_t dataHandle = 0 |
Referenced by MiMAC_SendPacket(), and MiMAC_Task().
uint8_t* dataPointer = NULL |
Referenced by MiMAC_SendPacket(), and MiMAC_Task().
miwi_status_t dataStatus |
Referenced by MiMAC_Task(), and PHY_DataConf().
uint8_t final_mic_value[16] |
Referenced by DataDecrypt(), DataEncrypt(), MiMAC_SendPacket(), and validate_mic().
uint8_t IEEESeqNum |
Referenced by MiMAC_Init(), and MiMAC_SendPacket().
uint8_t InitVect_in[16] |
Referenced by mic_generator().
API_UINT16_UNION MAC_PANID |
uint8_t MACCurrentChannel |
Referenced by MiMAC_Set().
MACINIT_PARAM MACInitParams |
const uint8_t myKeySequenceNumber = KEY_SEQUENCE_NUMBER |
Referenced by MiMAC_SendPacket().
API_UINT16_UNION myNetworkAddress |
const char mySecurityKey[16] |
Referenced by DataDecrypt(), DataEncrypt(), and mic_generator().
API_UINT32_UNION OutgoingFrameCounter |
uint8_t packet[128] |
Referenced by MiMAC_SendPacket().
uint8_t received_mic_values[AES_BLOCKSIZE/4] |
Referenced by MiMAC_ReceivedPacket(), and validate_mic().