TwePacketUART

Mono Wireless Inc.

TwePacketUART

TwePacketAppUartクラスは、App_UARTの拡張書式を親機・中継器アプリApp_Wingsで受信したときの形式です。

class TwePacketAppUART : public TwePacket, public DataAppUART

パケットデータ内の諸情報はparse<TwePacketUART>()実行後にDataAppUARTに格納されます。

簡易形式は解釈できません。parse<TwePacketUART>()ではE_PKT::PKT_ERRORを戻します。内容を確認するには元のバイト列を直接参照してください。

DataAppUART構造体

struct DataAppUART {
        /**
         * source address (Serial ID)
         */
        uint32_t u32addr_src;

        /**
         * source address (Serial ID)
         */
        uint32_t u32addr_dst;

        /**
         * source address (logical ID)
         */
        uint8_t u8addr_src;

        /**
         * destination address (logical ID)
         */
        uint8_t u8addr_dst;

        /**
         * LQI value
         */
        uint8_t u8lqi;

        /**
         * Response ID
         */
        uint8_t u8response_id;

        /**
         * Payload length
         */
        uint16_t u16paylen;

        /**
         * payload
         */
#if MWX_PARSER_PKT_APPUART_FIXED_BUF == 0
        mwx::smplbuf_u8_attach payload;
#else
        mwx::smplbuf_u8<MWX_PARSER_PKT_APPUART_FIXED_BUF> payload;
#endif
    };

payloadはデータ部分ですが、マクロ定義によってデータ格納の方法が変わります。

MWX_PARSER_PKT_APPUART_FIXED_BUFの値が0としてコンパイルした場合は、payloadはパケット解析を行うバイト列を直接参照します。元のバイト列の値が変更されるとpayload中のデータは破壊されます。

MWX_PARSER_PKT_APPUART_FIXED_BUFの値を0より大きい値として定義した場合は、payloadにはその値(バイト数)のバッファが確保されます。ただしシリアル電文のデータがバッファサイズを超えた場合はparse<TwePacketAppUART>()は失敗しE_PKT::PKT_ERRORを戻します。