|
|
@@ -34,6 +34,8 @@
|
|
|
void bc260y_reset(void); // 重置状态。该文件中的方法共用状态,在使用下面的方法前需要重置一下状态。
|
|
|
enum Result bc260y_exit_sleep(void); // 退出休眠
|
|
|
enum Result bc260y_exit_sleep_sync(void); // 退出休眠
|
|
|
+enum Result bc260y_exit_sleep_2(void); // 退出休眠
|
|
|
+enum Result bc260y_exit_sleep_2_sync(void); // 退出休眠
|
|
|
void bc260y_enter_sleep(void); // 进入休眠
|
|
|
/**
|
|
|
* 查询休眠模式
|
|
|
@@ -145,8 +147,9 @@ enum Result bc260y_set_qisde_sync(uint8_t echo); // 同
|
|
|
*
|
|
|
**/
|
|
|
enum Result bc260y_send(uint8_t connectID, uint8_t * data, uint16_t data_length);
|
|
|
-enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
|
|
|
enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length); // 同步
|
|
|
+enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
|
|
|
+enum Result bc260y_send_rai_sync(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
|
|
|
/**
|
|
|
* 接收数据
|
|
|
* 输入<<
|
|
|
@@ -222,7 +225,7 @@ enum Result bc260y_dataformat_sync(uint8_t n);
|
|
|
//
|
|
|
|
|
|
// AT指令
|
|
|
-static char AT_CMD[256];
|
|
|
+static char AT_CMD[1024];
|
|
|
|
|
|
|
|
|
// EC800M提供的一些方法
|
|
|
@@ -235,6 +238,8 @@ struct BC260Y_Struct bc260y =
|
|
|
.reset = bc260y_reset,
|
|
|
.exit_sleep = bc260y_exit_sleep,
|
|
|
.exit_sleep_sync = bc260y_exit_sleep_sync,
|
|
|
+ .exit_sleep_2 = bc260y_exit_sleep_2,
|
|
|
+ .exit_sleep_2_sync = bc260y_exit_sleep_2_sync,
|
|
|
.enter_sleep = bc260y_enter_sleep,
|
|
|
.query_sleep = bc260y_query_sleep,
|
|
|
.query_sleep_sync = bc260y_query_sleep_sync,
|
|
|
@@ -257,8 +262,9 @@ struct BC260Y_Struct bc260y =
|
|
|
.set_qisde = bc260y_set_qisde,
|
|
|
.set_qisde_sync = bc260y_set_qisde_sync,
|
|
|
.send = bc260y_send,
|
|
|
- .send_rai = bc260y_send_rai,
|
|
|
.send_sync = bc260y_send_sync,
|
|
|
+ .send_rai = bc260y_send_rai,
|
|
|
+ .send_rai_sync = bc260y_send_rai_sync,
|
|
|
.recv = bc260y_recv,
|
|
|
.recv_with_time = bc260y_recv_with_time,
|
|
|
.recv_with_time_sync = bc260y_recv_with_time_sync,
|
|
|
@@ -457,6 +463,73 @@ enum Result bc260y_exit_sleep_sync()
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+// 退出休眠
|
|
|
+enum Result bc260y_exit_sleep_2(void)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 123, time = 100; // 活动ID, 超时时间
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; } // 校验ID
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT\r\n"); // 拼接AT指令
|
|
|
+ result = send_at(AT_CMD, activeID);
|
|
|
+ }
|
|
|
+ else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("返回结果过期1,请重置状态\r\n"); // 打印日志
|
|
|
+
|
|
|
+ result = failed(); // 失败
|
|
|
+ }
|
|
|
+ else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("AT指令返回超时\r\n"); // 打印日志
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = success(); // 成功
|
|
|
+ }
|
|
|
+ if(strstr((char * )AT_result(), "OK\r\n") != NULL) // 查询是否返回
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = success(); // 成功
|
|
|
+ }
|
|
|
+ else if(strstr((char * )AT_result(), "+QNBIOTEVENT:") != NULL)
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = success(); // 成功
|
|
|
+ }
|
|
|
+ else if(strstr((char * )AT_result(), "ERROR\r\n") != NULL) // 查询是否返回
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+
|
|
|
+ result = failed(); // 失败
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+
|
|
|
+}
|
|
|
+enum Result bc260y_exit_sleep_2_sync()
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ result = bc260y_exit_sleep_2();
|
|
|
+ if(result != Result_None)
|
|
|
+ {
|
|
|
+ // 重置
|
|
|
+ bc260y.reset();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
// 进入休眠
|
|
|
void bc260y_enter_sleep(void)
|
|
|
{
|
|
|
@@ -1405,6 +1478,31 @@ enum Result bc260y_send(uint8_t connectID, uint8_t * data, uint16_t data_length)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+* 发送数据
|
|
|
+* 输入<<
|
|
|
+* connectID Socket ID。范围1-11。
|
|
|
+* send_length 发送长度。
|
|
|
+* data 待发送的数据。
|
|
|
+*
|
|
|
+* activeID 49
|
|
|
+**/
|
|
|
+enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ result = bc260y_send(connectID, data, data_length);
|
|
|
+ if(result != Result_None)
|
|
|
+ {
|
|
|
+ // 重置
|
|
|
+ bc260y.reset();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 发送数据
|
|
|
* 输入<<
|
|
|
@@ -1425,9 +1523,13 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
|
|
|
// 判断状态
|
|
|
if(getStatus() == Status_None) // 空闲状态
|
|
|
{
|
|
|
-// memset(hexData,0, sizeof(hexData));
|
|
|
-// byteToHexStr(data,hexData, data_length);//nb需要转16进制
|
|
|
-// sprintf(AT_CMD, "AT+QISEND=%d,%d,%s,%d\r\n", connectID, data_length,hexData,rai); // 拼接AT指令
|
|
|
+ memset(AT_CMD, 0, sizeof(AT_CMD));
|
|
|
+ sprintf(AT_CMD + strlen(AT_CMD), "AT+QISEND=%d,%d,\"", connectID, data_length); // 拼接AT指令
|
|
|
+ for(uint16_t i = 0; i < data_length; i++)
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD + strlen(AT_CMD), "%02X", data[i]);
|
|
|
+ }
|
|
|
+ sprintf(AT_CMD + strlen(AT_CMD), "\",%d\r\n", rai); // 拼接AT指令
|
|
|
result = send_at(AT_CMD, activeID);
|
|
|
}
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
@@ -1468,6 +1570,8 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 发送数据
|
|
|
* 输入<<
|
|
|
@@ -1477,12 +1581,12 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
|
|
|
*
|
|
|
* activeID 49
|
|
|
**/
|
|
|
-enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length)
|
|
|
+enum Result bc260y_send_rai_sync(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
while(1)
|
|
|
{
|
|
|
- result = bc260y_send(connectID, data, data_length);
|
|
|
+ result = bc260y_send_rai(connectID, data, data_length, rai);
|
|
|
if(result != Result_None)
|
|
|
{
|
|
|
// 重置
|