mirror of git://git.sysmocom.de/ofono
Implement full CFUN handling for AT server
This commit is contained in:
parent
46e77907b3
commit
0b2014df05
|
@ -49,6 +49,8 @@
|
|||
#define DEFAULT_TCP_PORT 12346
|
||||
#define DEFAULT_SOCK_PATH "./server_sock"
|
||||
|
||||
static int modem_mode = 0;
|
||||
|
||||
struct sock_server{
|
||||
int server_sock;
|
||||
};
|
||||
|
@ -159,12 +161,18 @@ static gboolean send_ok(gpointer user)
|
|||
static void cfun_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
|
||||
{
|
||||
GAtServer *server = user;
|
||||
char buf[12];
|
||||
|
||||
switch (type) {
|
||||
case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
|
||||
g_at_server_send_info(server, "+CFUN: (0-1)", TRUE);
|
||||
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
|
||||
break;
|
||||
case G_AT_SERVER_REQUEST_TYPE_QUERY:
|
||||
snprintf(buf, sizeof(buf), "+CFUN: %d", modem_mode);
|
||||
g_at_server_send_info(server, buf, TRUE);
|
||||
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
|
||||
break;
|
||||
case G_AT_SERVER_REQUEST_TYPE_SET:
|
||||
{
|
||||
GAtResultIter iter;
|
||||
|
@ -179,6 +187,12 @@ static void cfun_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
|
|||
if (mode != 0 && mode != 1)
|
||||
goto error;
|
||||
|
||||
if (modem_mode == mode) {
|
||||
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
|
||||
break;
|
||||
}
|
||||
|
||||
modem_mode = mode;
|
||||
g_timeout_add_seconds(3, send_ok, server);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue