mirror of git://git.sysmocom.de/ofono
gatserver: add tone and pulse dialing AT commands
This commit is contained in:
parent
034941da40
commit
bdb4c8d3db
|
@ -96,6 +96,7 @@ struct v250_settings {
|
||||||
int c108; /* set by &D<val> */
|
int c108; /* set by &D<val> */
|
||||||
char l; /* set by L<val> */
|
char l; /* set by L<val> */
|
||||||
char m; /* set by M<val> */
|
char m; /* set by M<val> */
|
||||||
|
char dial_mode; /* set by P or T */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* AT command set that server supported */
|
/* AT command set that server supported */
|
||||||
|
@ -300,6 +301,7 @@ static void v250_settings_create(struct v250_settings *v250)
|
||||||
v250->c108 = 0;
|
v250->c108 = 0;
|
||||||
v250->l = 0;
|
v250->l = 0;
|
||||||
v250->m = 1;
|
v250->m = 1;
|
||||||
|
v250->dial_mode = 'T';
|
||||||
}
|
}
|
||||||
|
|
||||||
static void s_template_cb(GAtServerRequestType type, GAtResult *result,
|
static void s_template_cb(GAtServerRequestType type, GAtResult *result,
|
||||||
|
@ -481,6 +483,40 @@ static void at_c108_cb(GAtServer *server, GAtServerRequestType type,
|
||||||
at_template_cb(type, result, server, &server->v250.c108, "&D", 0, 2, 2);
|
at_template_cb(type, result, server, &server->v250.c108, "&D", 0, 2, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* According to ITU V.250 6.3.2 and 6.3.3: "Implementation of this command
|
||||||
|
* is mandatory; however, if DTMF or pulse dialling is not implemented,
|
||||||
|
* this command will have no effect"
|
||||||
|
*/
|
||||||
|
static void at_t_cb(GAtServer *server, GAtServerRequestType type,
|
||||||
|
GAtResult *result, gpointer user_data)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
|
||||||
|
server->v250.dial_mode = 'T';
|
||||||
|
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void at_p_cb(GAtServer *server, GAtServerRequestType type,
|
||||||
|
GAtResult *result, gpointer user_data)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
|
||||||
|
server->v250.dial_mode = 'P';
|
||||||
|
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void at_f_cb(GAtServer *server, GAtServerRequestType type,
|
static void at_f_cb(GAtServer *server, GAtServerRequestType type,
|
||||||
GAtResult *result, gpointer user_data)
|
GAtResult *result, gpointer user_data)
|
||||||
{
|
{
|
||||||
|
@ -1177,6 +1213,8 @@ static void basic_command_register(GAtServer *server)
|
||||||
g_at_server_register(server, "&F", at_f_cb, NULL, NULL);
|
g_at_server_register(server, "&F", at_f_cb, NULL, NULL);
|
||||||
g_at_server_register(server, "L", at_l_cb, NULL, NULL);
|
g_at_server_register(server, "L", at_l_cb, NULL, NULL);
|
||||||
g_at_server_register(server, "M", at_m_cb, NULL, NULL);
|
g_at_server_register(server, "M", at_m_cb, NULL, NULL);
|
||||||
|
g_at_server_register(server, "T", at_t_cb, NULL, NULL);
|
||||||
|
g_at_server_register(server, "P", at_p_cb, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GAtServer *g_at_server_new(GIOChannel *io)
|
GAtServer *g_at_server_new(GIOChannel *io)
|
||||||
|
|
Loading…
Reference in New Issue