Преглед изворни кода

add:[780EX]添加sms头文件

wl пре 2 година
родитељ
комит
43b27b80f8
1 измењених фајлова са 141 додато и 0 уклоњено
  1. 141 0
      components/sms/luat_sms.h

+ 141 - 0
components/sms/luat_sms.h

@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2022 OpenLuat & AirM2M
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef LUAT_SMS_H
+#define LUAT_SMS_H
+
+#include "luat_base.h"
+
+#define LUAT_MSG_MAX_ADDR_LEN 80
+#define LUAT_SMS_MAX_TXT_SIZE 640
+#define LUAT_SMS_MAX_PDU_SIZE 180
+#define LUAT_SMS_MAX_LENGTH_OF_ADDRESS_VALUE 40
+#define LUAT_SMS_MAX_ADDR_STR_MAX_LEN ((LUAT_SMS_MAX_LENGTH_OF_ADDRESS_VALUE + 1) * 4)
+typedef void (*LUAT_SMS_HANDLE_CB)(uint8_t event, void* param);
+typedef void (*LUAT_SMS_HANDLE_SEND_CB)(int ret);
+
+typedef enum
+{
+    SMS_SEND_OK = 0,
+    SMS_ME_FAILURE = 300,
+    SMS_SERVICE_OF_ME_RESV,
+    SMS_OPERATION_NOT_ALLOWED,
+    SMS_OPERATION_NOT_SUPPORTED,
+    SMS_INVALID_PDU_MODE_PARAMETER,
+    SMS_INVALID_TEXT_MODE_PARAMETER,
+    SMS_USIM_NOT_INSERTED = 310,
+    SMS_USIM_PIN_REQUIRED,
+    SMS_PHSIM_PIN_REQUIRED,
+    SMS_USIM_FAILURE,
+    SMS_USIM_BUSY,
+    SMS_USIM_WRONG,
+    SMS_USIM_PUK_REQUIRED,
+    SMS_USIM_PIN2_REQUIRED,
+    SMS_USIM_PUK2_REQUIRED,
+    SMS_MEMORY_FAILURE = 320,
+    SMS_INVALID_MEM_INDEX,
+    SMS_MEM_FULL,
+    SMS_SMSC_ADDR_UNKNOWN = 330,
+    SMS_NO_NETWORK_SERVICE,
+    SMS_NETWORK_TIMEOUT,
+    SMS_NO_CNMA_ACK_EXPECTED = 340,
+    SMS_UNKNOWN_ERROR = 500,
+    SMS_INVALID_DATA  = 550,
+    SMS_UNSUPPORT_TEXT_WITH_CHINESE = 555,
+    SMS_MAX_ERROR = 0xFFFF
+}LUAT_SMS_SEND_RET_CODE_E;
+
+typedef struct
+{
+    LUAT_SMS_HANDLE_CB cb;
+    LUAT_SMS_HANDLE_SEND_CB send_cb;
+}LUAT_SMS_MAIN_CFG_T;
+
+typedef struct
+{
+    uint8_t   year;
+    uint8_t   month;
+    uint8_t   day;
+    uint8_t   hour;
+    uint8_t   minute;
+    uint8_t   second;
+    uint8_t   tz;         /* time zone */
+    uint8_t   tz_sign;     /* '+'/'-' */
+}LUAT_SMS_RECV_MSG_TIME_T;
+
+typedef struct
+{
+    uint8_t  type;
+    uint8_t  msg_class;
+    uint8_t  alpha_bet;
+    uint8_t  indication;
+    uint8_t  dcs;
+}LUAT_SMS_RECV_MSG_DCS_T;
+
+//接受的短信信息结构体
+typedef struct
+{
+    uint16_t pdu_length;//PDU 长度
+    uint16_t sms_length;//TEXT 的长度
+    LUAT_SMS_RECV_MSG_TIME_T time;//时间
+    LUAT_SMS_RECV_MSG_DCS_T dcs_info;//Data Coding Scheme
+    char pdu_data[LUAT_SMS_MAX_TXT_SIZE + 1];//PDU 数据
+    uint8_t sms_buffer[LUAT_SMS_MAX_TXT_SIZE + 1];//TEXT 数据
+    uint8_t sc_address[LUAT_MSG_MAX_ADDR_LEN + 1];//中心地址
+    uint8_t phone_address[LUAT_MSG_MAX_ADDR_LEN + 1];//来电号码
+    uint8_t refNum;
+    uint8_t maxNum;
+    uint8_t seqNum;
+}LUAT_SMS_RECV_MSG_T;
+
+/**
+ * @defgroup luatos_sms 短信功能
+ * @{
+ */
+/**
+ * @brief 初始化短信
+ */
+void luat_sms_init(void);
+
+/**
+ * @brief 发送短信
+ * @param p_input           短信的内容(当 is_pdu = false 时, 只支持英文,数字以及常用符号)
+ * @param p_des             接收短信的手机号
+ * @param is_pdu            是否是PDU格式的短信(当 false 时, 有效参数为 p_input & pdes, 当 true 时, 有效参数为 p_input & pudLen)
+ * @param input_pdu_len     PDU格式短信的长度,注意和p_input长度没有关系
+ * @return 0成功,-1失败
+ */
+int luat_sms_send_msg(uint8_t *p_input, char *p_des, bool is_pdu, int input_pdu_len);
+
+/**
+ * @brief 接受短信回调
+ * @param callback_fun    回调函数
+ */
+void luat_sms_recv_msg_register_handler(LUAT_SMS_HANDLE_CB callback_fun);
+
+
+/**
+ * @brief 发送短信回调
+ * @param callback_fun    回调函数
+ */
+void luat_sms_send_msg_register_handler(LUAT_SMS_HANDLE_SEND_CB callback_fun);
+
+#endif