Lazurite 日本語リファレンス


void SubGHz.decMac(*mac,*raw,raw_len)


詳細

void SubGHz.decMac(SUBGHZ_MAC_PARAM *mac,uint8_t *raw,uint16_t raw_len);

仕様

受信したrawデータを各種パラメータに分解するための機能です

パラメータ

    SUBGHZ_MAC_PARAM *mac

受信したデータを展開する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のサイズを示します。

    uint8_t *raw

受信したデータの先頭ポインタを指定します

 

    uint16_t raw_len

送信データのサイズを指定します。

戻り値

なし

 

サンプル

サンプルプログラム Print_SuGHz.cで使用しています。
以下のサンプルプログラムは、Print_SubGHz.cのloop関数です。
decMacの関数でデータを分解した後に、各パラメータを呼び出してシリアル出力しています。