diff options
Diffstat (limited to 'include/sms.h')
-rw-r--r-- | include/sms.h | 78 |
1 files changed, 36 insertions, 42 deletions
diff --git a/include/sms.h b/include/sms.h index 9295372..f92683d 100644 --- a/include/sms.h +++ b/include/sms.h @@ -49,18 +49,18 @@ * Values */ +#define IPC_SMS_TYPE_POINT_TO_POINT 0x01 +#define IPC_SMS_TYPE_STATUS_REPORT 0x02 +#define IPC_SMS_TYPE_OUTGOING 0x02 + +#define IPC_SMS_MSG_TYPE_MULTIPLE 0x01 +#define IPC_SMS_MSG_TYPE_SINGLE 0x02 + #define IPC_SMS_ACK_NO_ERROR 0x0000 #define IPC_SMS_ACK_PDA_FULL_ERROR 0x8080 #define IPC_SMS_ACK_MALFORMED_REQ_ERROR 0x8061 #define IPC_SMS_ACK_UNSPEC_ERROR 0x806F -#define IPC_SMS_MSG_MULTIPLE 0x01 -#define IPC_SMS_MSG_SINGLE 0x02 - -#define IPC_SMS_TYPE_POINT_TO_POINT 0x01 -#define IPC_SMS_TYPE_STATUS_REPORT 0x02 -#define IPC_SMS_TYPE_OUTGOING 0x02 - #define IPC_SMS_STATUS_REC_UNREAD 0x01 #define IPC_SMS_STATUS_REC_READ 0x02 #define IPC_SMS_STATUS_STO_UNSENT 0x03 @@ -70,65 +70,59 @@ * Structures */ -/* - * This is followed by: - * smsc_string (variable length, 1st byte is length) - * pdu (variable length) - */ -struct ipc_sms_send_msg_request { - unsigned char type; - unsigned char msg_type; - unsigned char unk; +struct ipc_sms_send_msg_request_header { + unsigned char type; // IPC_SMS_TYPE + unsigned char msg_type; // IPC_SMS_MSG_TYPE + unsigned char unknown; unsigned char length; - unsigned char smsc_len; } __attribute__((__packed__)); -struct ipc_sms_send_msg_response { - unsigned char type; - unsigned short error; - unsigned char msg_tpid; - unsigned char unk; +struct ipc_sms_send_msg_response_data { + unsigned char type; // IPC_SMS_TYPE + unsigned short ack; // IPC_SMS_ACK + unsigned char id; + unsigned char unknown; } __attribute__((__packed__)); -struct ipc_sms_incoming_msg { - unsigned char msg_type; - unsigned char type; +struct ipc_sms_incoming_msg_header { + unsigned char msg_type; // IPC_SMS_MSG_TYPE + unsigned char type; // IPC_SMS_TYPE unsigned short sim_index; - unsigned char msg_tpid; + unsigned char id; unsigned char length; } __attribute__((__packed__)); -struct ipc_sms_deliver_report_request { - unsigned char type; - unsigned short error; - unsigned char msg_tpid; - unsigned char unk; +struct ipc_sms_deliver_report_request_data { + unsigned char type; // IPC_SMS_TYPE + unsigned short ack; // IPC_SMS_ACK + unsigned char id; + unsigned char unknown; } __attribute__((__packed__)); -struct ipc_sms_deliver_report_response { - unsigned short error; +struct ipc_sms_deliver_report_response_data { + unsigned short ack; // IPC_SMS_ACK } __attribute__((__packed__)); struct ipc_sms_del_msg_request_data { - unsigned char unknown; // This is usually set to 0x02 + unsigned char magic; unsigned short index; } __attribute__((__packed__)); struct ipc_sms_del_msg_response_data { - unsigned char unknown; // This is usually set to 0x02 + unsigned char magic; unsigned short error; unsigned short index; } __attribute__((__packed__)); struct ipc_sms_save_msg_request_data { - unsigned char unknown; // This is usually set to 0x02 - unsigned short index; // This is usually set to 0x0B - unsigned char status; - unsigned char length; // Total SMSC+PDU length + unsigned char magic; + unsigned short index; + unsigned char status; // IPC_SMS_STATUS + unsigned char length; } __attribute__((__packed__)); struct ipc_sms_save_msg_response_data { - unsigned char unknown; // This is usually set to 0x02 + unsigned char magic; unsigned short error; unsigned short index; } __attribute__((__packed__)); @@ -137,8 +131,8 @@ struct ipc_sms_save_msg_response_data { * Helpers */ -unsigned char *ipc_sms_send_msg_pack(struct ipc_sms_send_msg_request *msg, - char *smsc, unsigned char *pdu, int length); +unsigned char *ipc_sms_send_msg_pack(struct ipc_sms_send_msg_request_header *msg, char *smsc, + unsigned char *pdu, int pdu_length); #endif |