#ifndef __IFAA_WORLD_SHARED_BUFF_H_
#define __IFAA_WORLD_SHARED_BUFF_H_

#define LOCAL_PAGE_SIZE (0x1000)

#define IFBIO_INPUT_LEN   (LOCAL_PAGE_SIZE - 4)
#define IFBIO_OUTPUT_LEN  (LOCAL_PAGE_SIZE - 8)

#ifdef TA_RELEASE
#define LOGGER_BUF_LEN (LOCAL_PAGE_SIZE - 4)
#else
#define LOGGER_BUF_LEN (LOCAL_PAGE_SIZE * 3 - 4)
#endif

typedef union{
    struct{
        union{
            uint32_t version;
            uint32_t cmd_id;
        };

        uint8_t input[IFBIO_INPUT_LEN];
    };
    uint8_t buff_in[LOCAL_PAGE_SIZE];
} __attribute__ ((packed)) cmd_req_t, *cmd_req_p, qsc_send_cmd_t;

typedef struct {
    union{
        struct{
            union{
                int32_t status;
                int32_t ret;
            };

            uint32_t out_len;
            uint8_t output[IFBIO_OUTPUT_LEN];
        };
        uint8_t buff_rsp[LOCAL_PAGE_SIZE];
    };

    union{
        struct{
            uint32_t log_len;
            uint8_t log_buf[LOGGER_BUF_LEN];
        };
        uint8_t buff_log[LOGGER_BUF_LEN + 4];
    };
} __attribute__ ((packed)) cmd_rsp_t, *cmd_rsp_p, qsc_send_cmd_rsp_t;

#endif /*__IFAA_WORLD_SHARED_BUFF_H_ */
