#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int is_context1_active(const char *at_response) {
if (at_response == NULL) {
return -1;
}
const char *p = strstr(at_response, "+QIACT:");
if (p == NULL) {
return -1;
}
int context_id, state;
if (sscanf(p, "+QIACT: %d,%d", &context_id, &state) != 2) {
return -1;
}
return (context_id == 1 && state == 1) ? 1 : 0;
}
int main() {
const char *response_activated =
"AT+QIACT?\r\n"
"+QIACT: 1,1,1,\"10.73.40.161\"\r\n"
"OK\r\n";
const char *response_deactivated =
"AT+QIACT?\r\n"
"+QIACT: 1,0,0,\"0.0.0.0\"\r\n"
"OK\r\n";
printf("Context 1状态: %d (1=激活, 0=未激活, -1=错误)\n",
is_context1_active(response_activated));
printf("Context 1状态: %d\n",
is_context1_active(response_deactivated));
return 0;
}