FS-4379 gsmopen: 'gsm remove interface' works now
This commit is contained in:
parent
e97da8e20a
commit
c5d72d9bd0
|
@ -342,6 +342,7 @@ static switch_status_t interface_exists(char *the_interface)
|
||||||
static switch_status_t remove_interface(char *the_interface)
|
static switch_status_t remove_interface(char *the_interface)
|
||||||
{
|
{
|
||||||
int x = 10;
|
int x = 10;
|
||||||
|
int fd;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
switch_size_t howmany = 8;
|
switch_size_t howmany = 8;
|
||||||
#else
|
#else
|
||||||
|
@ -390,6 +391,8 @@ static switch_status_t remove_interface(char *the_interface)
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOKKA(tech_pvt->controldev_lock);
|
||||||
|
|
||||||
globals.GSMOPEN_INTERFACES[interface_id].running = 0;
|
globals.GSMOPEN_INTERFACES[interface_id].running = 0;
|
||||||
|
|
||||||
if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) {
|
if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) {
|
||||||
|
@ -441,6 +444,42 @@ static switch_status_t remove_interface(char *the_interface)
|
||||||
switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread);
|
switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fd = tech_pvt->controldevfd;
|
||||||
|
//DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
|
||||||
|
if (fd) {
|
||||||
|
//close(fd);
|
||||||
|
tech_pvt->controldevfd = -1;
|
||||||
|
DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
serial_audio_shutdown(tech_pvt);
|
||||||
|
|
||||||
|
int res;
|
||||||
|
res = tech_pvt->serialPort_serial_control->Close();
|
||||||
|
DEBUGA_GSMOPEN("serial_shutdown res=%d (controldevfd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldevfd);
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
shutdown(tech_pvt->audiogsmopenpipe[0], 2);
|
||||||
|
close(tech_pvt->audiogsmopenpipe[0]);
|
||||||
|
shutdown(tech_pvt->audiogsmopenpipe[1], 2);
|
||||||
|
close(tech_pvt->audiogsmopenpipe[1]);
|
||||||
|
shutdown(tech_pvt->audiopipe[0], 2);
|
||||||
|
close(tech_pvt->audiopipe[0]);
|
||||||
|
shutdown(tech_pvt->audiopipe[1], 2);
|
||||||
|
close(tech_pvt->audiopipe[1]);
|
||||||
|
shutdown(tech_pvt->GSMopenHandles.fdesc[0], 2);
|
||||||
|
close(tech_pvt->GSMopenHandles.fdesc[0]);
|
||||||
|
shutdown(tech_pvt->GSMopenHandles.fdesc[1], 2);
|
||||||
|
close(tech_pvt->GSMopenHandles.fdesc[1]);
|
||||||
|
#endif /* WIN32 */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
UNLOCKA(tech_pvt->controldev_lock);
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
if (globals.gsm_console == &globals.GSMOPEN_INTERFACES[interface_id]) {
|
if (globals.gsm_console == &globals.GSMOPEN_INTERFACES[interface_id]) {
|
||||||
DEBUGA_GSMOPEN("interface '%s' no more console\n", GSMOPEN_P_LOG, the_interface);
|
DEBUGA_GSMOPEN("interface '%s' no more console\n", GSMOPEN_P_LOG, the_interface);
|
||||||
|
@ -454,6 +493,7 @@ static switch_status_t remove_interface(char *the_interface)
|
||||||
|
|
||||||
DEBUGA_GSMOPEN("interface '%s' deleted successfully\n", GSMOPEN_P_LOG, the_interface);
|
DEBUGA_GSMOPEN("interface '%s' deleted successfully\n", GSMOPEN_P_LOG, the_interface);
|
||||||
globals.GSMOPEN_INTERFACES[interface_id].running = 1;
|
globals.GSMOPEN_INTERFACES[interface_id].running = 1;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
//running = 1;
|
//running = 1;
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue