セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-11-14 現在

TwePacketUART

App_UARTからのパケット
    TwePacketAppUartクラスは、App_UARTの拡張書式を親機・中継機アプリApp_Wingsで受信したときの形式です。
    class TwePacketAppUART : public TwePacket, public DataAppUART

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

    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を戻します。