" type INTEGER,\n"
" max_streams INTEGER,\n"
" port INTEGER,\n"
- " codec_string VARCHAR(255)\n"
+ " codec_string VARCHAR(255),\n"
+ " headset INTEGER,\n"
+ " handset INTEGER,\n"
+ " speaker INTEGER\n"
");\n";
static char lines_sql[] =
switch_odbc_handle_exec(profile->master_odbc, active_lines_sql, NULL, NULL);
} else {
if ((db = switch_core_db_open_file(profile->dbname))) {
- switch_core_db_test_reactive(db, "SELECT * FROM skinny_devices", NULL, devices_sql);
- switch_core_db_test_reactive(db, "SELECT * FROM skinny_lines", NULL, lines_sql);
- switch_core_db_test_reactive(db, "SELECT * FROM skinny_buttons", NULL, buttons_sql);
- switch_core_db_test_reactive(db, "SELECT * FROM skinny_active_lines", NULL, active_lines_sql);
+ switch_core_db_test_reactive(db, "SELECT headset FROM skinny_devices", "DROP TABLE skinny_devices", devices_sql);
+ switch_core_db_test_reactive(db, "SELECT * FROM skinny_lines", "DROP TABLE skinny_lines", lines_sql);
+ switch_core_db_test_reactive(db, "SELECT * FROM skinny_buttons", "DROP TABLE skinny_buttons", buttons_sql);
+ switch_core_db_test_reactive(db, "SELECT * FROM skinny_active_lines", "DROP TABLE skinny_active_lines", active_lines_sql);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open SQL Database!\n");
continue;
switch_status_t skinny_headset_status_message(listener_t *listener, skinny_message_t *request)
{
+ char *sql;
+
skinny_check_data_length(request, sizeof(request->data.headset_status));
- switch(request->data.headset_status.mode) {
- case 1:
- listener->headset = SKINNY_ACCESSORY_STATE_OFFHOOK;
- break;
- default:
- listener->headset = SKINNY_ACCESSORY_STATE_ONHOOK;
- break;
+ if ((sql = switch_mprintf(
+ "UPDATE skinny_devices SET headset=%d WHERE name='%s' and instance=%d",
+ (request->data.headset_status.mode==1) ? SKINNY_ACCESSORY_STATE_OFFHOOK : SKINNY_ACCESSORY_STATE_ONHOOK,
+ listener->device_name,
+ listener->device_instance
+ ))) {
+ skinny_execute_sql(listener->profile, sql, listener->profile->sql_mutex);
+ switch_safe_free(sql);
}
+
return SWITCH_STATUS_SUCCESS;
}
}
switch_status_t skinny_handle_accessory_status_message(listener_t *listener, skinny_message_t *request)
{
+ char *sql;
+
skinny_check_data_length(request, sizeof(request->data.accessory_status));
switch(request->data.accessory_status.accessory_id) {
case SKINNY_ACCESSORY_HEADSET:
- listener->headset = request->data.accessory_status.accessory_status;
+ if ((sql = switch_mprintf(
+ "UPDATE skinny_devices SET headset=%d WHERE name='%s' and instance=%d",
+ request->data.accessory_status.accessory_status,
+ listener->device_name,
+ listener->device_instance
+ ))) {
+ skinny_execute_sql(listener->profile, sql, listener->profile->sql_mutex);
+ switch_safe_free(sql);
+ }
break;
case SKINNY_ACCESSORY_HANDSET:
- listener->handset = request->data.accessory_status.accessory_status;
+ if ((sql = switch_mprintf(
+ "UPDATE skinny_devices SET handset=%d WHERE name='%s' and instance=%d",
+ request->data.accessory_status.accessory_status,
+ listener->device_name,
+ listener->device_instance
+ ))) {
+ skinny_execute_sql(listener->profile, sql, listener->profile->sql_mutex);
+ switch_safe_free(sql);
+ }
break;
case SKINNY_ACCESSORY_SPEAKER:
- listener->speaker = request->data.accessory_status.accessory_status;
+ if ((sql = switch_mprintf(
+ "UPDATE skinny_devices SET speaker=%d WHERE name='%s' and instance=%d",
+ request->data.accessory_status.accessory_status,
+ listener->device_name,
+ listener->device_instance
+ ))) {
+ skinny_execute_sql(listener->profile, sql, listener->profile->sql_mutex);
+ switch_safe_free(sql);
+ }
break;
}