| #ifndef protocol_h |
| #define protocol_h |
| |
| #include <stdint.h> |
| |
| struct msgb; |
| |
| /* From Qualcomm Linux kernel diagchar.h */ |
| #define DIAG_MAX_REQ_SIZE (16 * 1024) |
| #define DIAG_MAX_HDLC_BUF_SIZE ((DIAG_MAX_REQ_SIZE * 2) + 3) |
| #define HDLC_FOOTER_LEN 3 |
| |
| |
| /* |
| * 79 00 03 00 06 00 9C 76 B6 07 00 00 D4 00 00 00 y......v¶...Ô... |
| * 02 00 00 00 39 00 00 00 63 F9 FF FF 00 00 00 00 ....9...cùÿÿ.... |
| * 41 43 51 20 53 74 61 72 74 65 64 2C 20 41 52 46 ACQ.Started,.ARF |
| * 43 4E 3D 25 64 2C 20 52 78 50 57 52 78 31 36 3D CN=%d,.RxPWRx16= |
| * 25 64 00 6C 31 5F 61 63 71 2E 63 00 %d.l1_acq.c. |
| */ |
| |
| /*********************************************************************** |
| * Extended Message Service (DIAG_EXT_MSG_F) |
| ***********************************************************************/ |
| |
| struct ext_log_msg { |
| /* msg_hdr_type equivalent */ |
| uint8_t type; |
| uint8_t ts_type; /* timestamp tyoe */ |
| uint8_t num_args; /* number of arguments */ |
| uint8_t drop_cnt; /* dropped messages */ |
| uint64_t timestamp; /* More 32 bit but dm-commands.h */ |
| |
| /* msg_desc_type */ |
| uint16_t line_nr; |
| uint16_t subsys_id; |
| uint32_t subsys_mask; |
| |
| int32_t params[0]; /* three params */ |
| } __attribute__((packed)); |
| |
| |
| /* message header */ |
| struct diag_msg_hdr { |
| uint8_t cmd_code; |
| uint8_t timestamp_type; |
| uint8_t num_args; |
| uint8_t drop_count; |
| uint64_t ts; |
| } __attribute__((packed)); |
| |
| /* message descriptor */ |
| struct diag_msg_desc { |
| uint16_t line; |
| uint16_t subsys_id; |
| uint16_t subsys_mask; |
| } __attribute__((packed)); |
| |
| /* message header for DIAG_EXT_MSG_F */ |
| struct diag_msg_ext { |
| struct diag_msg_hdr hdr; |
| struct diag_msg_desc desc; |
| uint32_t args[0]; /* see hdr.num_args */ |
| /* followed by null-terminated strings */ |
| } __attribute__((packed)); |
| |
| |
| /*********************************************************************** |
| * Log Service (IAG_LOG_F) |
| ***********************************************************************/ |
| |
| /* message header for DIAG_LOG_F */ |
| struct diag_log_hdr { |
| uint8_t cmd_code; |
| uint8_t more; |
| uint16_t len; |
| uint8_t data[0]; |
| } __attribute__((packed)); |
| |
| struct log_hdr { |
| uint16_t len; |
| uint16_t code; |
| uint64_t ts; |
| uint8_t data[0]; |
| } __attribute__((packed)); |
| |
| |
| /*********************************************************************** |
| * Command Service (DIAG_SUBSYS_CMD_F) |
| ***********************************************************************/ |
| |
| /* extended DIAG packet, */ |
| struct diagpkt_subsys_hdr { |
| uint8_t command; /* DIAG_SUBSYS_CMD_F */ |
| uint8_t subsys_id; |
| uint8_t subsys_cmd_code; |
| } __attribute__((packed)); |
| |
| int diag_push_subsys_hdr(struct msgb *msg, uint8_t subsys, uint8_t code); |
| uint32_t diag_ts_to_fn(uint64_t ts); |
| uint32_t diag_ts_to_epoch(uint64_t qd_time); |
| |
| #endif |