void SubGHz.decMac(SUBGHZ_MAC_PARAM *mac,uint8_t *raw,uint16_t raw_len);
受信したrawデータを各種パラメータに分解するための機能です
受信したデータを展開するSUBGHZ_MAC_PARAM構造体のポインタを指定します。
SUBGHZ_MAC_PARAM構造体は次のメンバ変数で構成されています。
変数名 | 説明 |
u_MAC_HEADER mac_header; | macヘッダを示すunion共用体です |
uint8_t data[2]; | mac_headerのメンバ変数で、2バイトのmacヘッダ保持用メモリです。 |
s_MAC_HEADER_BIT_ALIGNMENT alignment; |
mac_headerのメンバ変数で、macヘッダを分解するためのビットフィールドです。 各ビットフィールドの詳細はこちらを参照してください。 Endianの影響を受けるため、移植の際は注意してください。 |
uint8_t frame_type:3; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でframe_typeを示します |
uint8_t sec_enb:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でsec_enbを示します |
uint8_t pending:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でpendingを示します |
uint8_t ack_req:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でack_reqを示します |
uint8_t panid_comp:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でpanid_compを示します |
uint8_t nop:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数で空きビットを示します |
uint8_t seq_comp:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でseq_compを示します |
uint8_t ielist:1; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でielistを示します。 |
uint8_t tx_addr_type:2; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でtx_addr_typeを示します |
uint8_t frame_ver:2; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でframe_verを示します |
uint8_t rx_addr_type:2; | s_MAC_HEADER_BIT_ALIGNMENT のメンバ変数でrx_addr_typeを示します |
uint8_t addr_type; | アドレスタイプを示します |
uint16_t rx_panid; | 受信PANIDを示します |
uint8_t rx_addr[8]; | 受信アドレスを示します |
uint16_t tx_panid; | 送信PANIDを示します |
uint8_t tx_addr[8]; | 送信アドレスを示します |
uint8_t *raw; | rawデータのポインタを示します |
int16_t raw_len; | rawデータのサイズを示します |
uint8_t *payload; | payload(受信した実データ)のポインタを示します |
int16_t payload_len; | payloadのサイズを示します。 |
受信したデータの先頭ポインタを指定します
送信データのサイズを指定します。
なし
サンプルプログラム Print_SuGHz.cで使用しています。
以下のサンプルプログラムは、Print_SubGHz.cのloop関数です。
decMacの関数でデータを分解した後に、各パラメータを呼び出してシリアル出力しています。