Lines Matching refs:modem
37 # define D_ACTIVE VERBOSE_CHECK(modem)
84 static const char* _amodem_switch_technology(AModem modem, AModemTech newtech, int32_t newpreferred…
85 static int _amodem_set_cdma_subscription_source( AModem modem, ACdmaSubscriptionSource ss);
86 static int _amodem_set_cdma_prl_version( AModem modem, int prlVersion);
199 AModem modem; member
305 amodem_unsol( AModem modem, const char* format, ... ) in amodem_unsol() argument
307 if (modem->unsol_func) { in amodem_unsol()
310 vsnprintf( modem->out_buff, sizeof(modem->out_buff), format, args ); in amodem_unsol()
313 modem->unsol_func( modem->unsol_opaque, modem->out_buff ); in amodem_unsol()
318 amodem_receive_sms( AModem modem, SmsPDU sms ) in amodem_receive_sms() argument
322 if (modem->unsol_func) { in amodem_receive_sms()
326 strcpy( modem->out_buff, SMS_UNSOL_HEADER ); in amodem_receive_sms()
327 p = modem->out_buff + (sizeof(SMS_UNSOL_HEADER)-1); in amodem_receive_sms()
328 max = sizeof(modem->out_buff) - 3 - (sizeof(SMS_UNSOL_HEADER)-1); in amodem_receive_sms()
338 modem->unsol_func( modem->unsol_opaque, modem->out_buff ); in amodem_receive_sms()
343 amodem_printf( AModem modem, const char* format, ... ) in amodem_printf() argument
347 vsnprintf( modem->out_buff, sizeof(modem->out_buff), format, args ); in amodem_printf()
350 return modem->out_buff; in amodem_printf()
354 amodem_begin_line( AModem modem ) in amodem_begin_line() argument
356 modem->out_size = 0; in amodem_begin_line()
360 amodem_add_line( AModem modem, const char* format, ... ) in amodem_add_line() argument
364 modem->out_size += vsnprintf( modem->out_buff + modem->out_size, in amodem_add_line()
365 sizeof(modem->out_buff) - modem->out_size, in amodem_add_line()
371 amodem_end_line( AModem modem ) in amodem_end_line() argument
373 modem->out_buff[ modem->out_size ] = 0; in amodem_end_line()
374 return modem->out_buff; in amodem_end_line()
393 amodem_load_nvram( AModem modem ) in amodem_load_nvram() argument
396 D("Using config file: %s\n", modem->nvram_config_filename); in amodem_load_nvram()
397 if (aconfig_load_file(root, modem->nvram_config_filename)) { in amodem_load_nvram()
400 aconfig_save_file(root, modem->nvram_config_filename); in amodem_load_nvram()
406 amodem_nvram_get_int( AModem modem, const char *nvname, int defval) in amodem_nvram_get_int() argument
412 value = aconfig_int(modem->nvram_config, nvname, defval); in amodem_nvram_get_int()
419 aconfig_set(modem->nvram_config, nvname, newvalue); in amodem_nvram_get_int()
425 amodem_nvram_get_str( AModem modem, const char *nvname, const char *defval) in amodem_nvram_get_str() argument
429 value = aconfig_str(modem->nvram_config, nvname, defval); in amodem_nvram_get_str()
437 aconfig_set(modem->nvram_config, nvname, value); in amodem_nvram_get_str()
442 static ACdmaSubscriptionSource _amodem_get_cdma_subscription_source( AModem modem ) in _amodem_get_cdma_subscription_source() argument
445 iss = amodem_nvram_get_int( modem, NV_CDMA_SUBSCRIPTION_SOURCE, A_SUBSCRIPTION_RUIM ); in _amodem_get_cdma_subscription_source()
453 static ACdmaRoamingPref _amodem_get_cdma_roaming_preference( AModem modem ) in _amodem_get_cdma_roaming_preference() argument
456 rp = amodem_nvram_get_int( modem, NV_CDMA_ROAMING_PREF, A_ROAMING_PREF_ANY ); in _amodem_get_cdma_roaming_preference()
465 amodem_reset( AModem modem ) in amodem_reset() argument
469 modem->nvram_config = amodem_load_nvram(modem); in amodem_reset()
470 modem->radio_state = A_RADIO_STATE_OFF; in amodem_reset()
471 modem->wait_sms = 0; in amodem_reset()
473 modem->rssi= 7; // Two signal strength bars in amodem_reset()
474 modem->ber = 99; // Means 'unknown' in amodem_reset()
476 modem->oper_name_index = amodem_nvram_get_int(modem, NV_OPER_NAME_INDEX, 2); in amodem_reset()
477 …modem->oper_selection_mode = amodem_nvram_get_int(modem, NV_SELECTION_MODE, A_SELECTION_AUTOMATIC); in amodem_reset()
478 modem->oper_index = amodem_nvram_get_int(modem, NV_OPER_INDEX, 0); in amodem_reset()
479 modem->oper_count = amodem_nvram_get_int(modem, NV_OPER_COUNT, 2); in amodem_reset()
480 modem->in_emergency_mode = amodem_nvram_get_int(modem, NV_IN_ECBM, 0); in amodem_reset()
481 modem->prl_version = amodem_nvram_get_int(modem, NV_PRL_VERSION, 0); in amodem_reset()
483 modem->emergency_numbers[0] = "911"; in amodem_reset()
487 modem->emergency_numbers[i] = amodem_nvram_get_str(modem,key_name, NULL); in amodem_reset()
490 modem->area_code = -1; in amodem_reset()
491 modem->cell_id = -1; in amodem_reset()
493 strcpy( modem->operators[0].name[0], OPERATOR_HOME_NAME ); in amodem_reset()
494 strcpy( modem->operators[0].name[1], OPERATOR_HOME_NAME ); in amodem_reset()
495 strcpy( modem->operators[0].name[2], OPERATOR_HOME_MCCMNC ); in amodem_reset()
497 modem->operators[0].status = A_STATUS_AVAILABLE; in amodem_reset()
499 strcpy( modem->operators[1].name[0], OPERATOR_ROAMING_NAME ); in amodem_reset()
500 strcpy( modem->operators[1].name[1], OPERATOR_ROAMING_NAME ); in amodem_reset()
501 strcpy( modem->operators[1].name[2], OPERATOR_ROAMING_MCCMNC ); in amodem_reset()
503 modem->operators[1].status = A_STATUS_AVAILABLE; in amodem_reset()
505 modem->voice_mode = A_REGISTRATION_UNSOL_ENABLED_FULL; in amodem_reset()
506 modem->voice_state = A_REGISTRATION_HOME; in amodem_reset()
507 modem->data_mode = A_REGISTRATION_UNSOL_ENABLED_FULL; in amodem_reset()
508 modem->data_state = A_REGISTRATION_HOME; in amodem_reset()
509 modem->data_network = A_DATA_NETWORK_UMTS; in amodem_reset()
511 tmp = amodem_nvram_get_str( modem, NV_MODEM_TECHNOLOGY, "gsm" ); in amodem_reset()
512 modem->technology = android_parse_modem_tech( tmp ); in amodem_reset()
513 if (modem->technology == A_TECH_UNKNOWN) { in amodem_reset()
514 modem->technology = aconfig_int( modem->nvram_config, NV_MODEM_TECHNOLOGY, A_TECH_GSM ); in amodem_reset()
517 modem->preferred_mask = amodem_nvram_get_int( modem, NV_PREFERRED_MODE, 0x0f ); in amodem_reset()
519 modem->subscription_source = _amodem_get_cdma_subscription_source( modem ); in amodem_reset()
520 modem->roaming_pref = _amodem_get_cdma_roaming_preference( modem ); in amodem_reset()
523 static AVoiceCall amodem_alloc_call( AModem modem );
524 static void amodem_free_call( AModem modem, AVoiceCall call );
530 AModem modem = opaque; in android_modem_state_save() local
534 qemu_put_byte(f, modem->call_count); in android_modem_state_save()
537 for (nn = modem->call_count - 1; nn >= 0; nn--) { in android_modem_state_save()
538 AVoiceCall vcall = modem->calls + nn; in android_modem_state_save()
554 AModem modem = opaque; in android_modem_state_load() local
558 for (nn = modem->call_count - 1; nn >= 0; nn--) { in android_modem_state_load()
559 amodem_free_call( modem, modem->calls + nn); in android_modem_state_load()
564 AVoiceCall vcall = amodem_alloc_call( modem ); in android_modem_state_load()
581 AModem modem = _android_modem; in amodem_create() local
586 modem->base_port = base_port; in amodem_create()
588 start = bufprint( start, end, "%d", modem->base_port ); in amodem_create()
589 modem->nvram_config_filename = strdup( nvfname ); in amodem_create()
591 amodem_reset( modem ); in amodem_create()
592 modem->supportsNetworkDataType = 1; in amodem_create()
593 modem->unsol_func = unsol_func; in amodem_create()
594 modem->unsol_opaque = unsol_opaque; in amodem_create()
596 modem->sim = asimcard_create(base_port); in amodem_create()
601 android_modem_state_load, modem); in amodem_create()
603 aconfig_save_file( modem->nvram_config, modem->nvram_config_filename ); in amodem_create()
604 return modem; in amodem_create()
608 amodem_set_legacy( AModem modem ) in amodem_set_legacy() argument
610 modem->supportsNetworkDataType = 0; in amodem_set_legacy()
614 amodem_destroy( AModem modem ) in amodem_destroy() argument
616 asimcard_destroy( modem->sim ); in amodem_destroy()
617 modem->sim = NULL; in amodem_destroy()
622 amodem_has_network( AModem modem ) in amodem_has_network() argument
624 return !(modem->radio_state == A_RADIO_STATE_OFF || in amodem_has_network()
625 modem->oper_index < 0 || in amodem_has_network()
626 modem->oper_index >= modem->oper_count || in amodem_has_network()
627 modem->oper_selection_mode == A_SELECTION_DEREGISTRATION ); in amodem_has_network()
632 amodem_get_radio_state( AModem modem ) in amodem_get_radio_state() argument
634 return modem->radio_state; in amodem_get_radio_state()
638 amodem_set_radio_state( AModem modem, ARadioState state ) in amodem_set_radio_state() argument
640 modem->radio_state = state; in amodem_set_radio_state()
644 amodem_get_sim( AModem modem ) in amodem_get_sim() argument
646 return modem->sim; in amodem_get_sim()
650 amodem_get_voice_registration( AModem modem ) in amodem_get_voice_registration() argument
652 return modem->voice_state; in amodem_get_voice_registration()
656 amodem_set_voice_registration( AModem modem, ARegistrationState state ) in amodem_set_voice_registration() argument
658 modem->voice_state = state; in amodem_set_voice_registration()
661 modem->oper_index = OPERATOR_HOME_INDEX; in amodem_set_voice_registration()
663 modem->oper_index = OPERATOR_ROAMING_INDEX; in amodem_set_voice_registration()
665 switch (modem->voice_mode) { in amodem_set_voice_registration()
667 amodem_unsol( modem, "+CREG: %d,%d\r", in amodem_set_voice_registration()
668 modem->voice_mode, modem->voice_state ); in amodem_set_voice_registration()
672 amodem_unsol( modem, "+CREG: %d,%d, \"%04x\", \"%04x\"\r", in amodem_set_voice_registration()
673 modem->voice_mode, modem->voice_state, in amodem_set_voice_registration()
674 modem->area_code & 0xffff, modem->cell_id & 0xffff); in amodem_set_voice_registration()
682 amodem_get_data_registration( AModem modem ) in amodem_get_data_registration() argument
684 return modem->data_state; in amodem_get_data_registration()
688 amodem_set_data_registration( AModem modem, ARegistrationState state ) in amodem_set_data_registration() argument
690 modem->data_state = state; in amodem_set_data_registration()
692 switch (modem->data_mode) { in amodem_set_data_registration()
694 amodem_unsol( modem, "+CGREG: %d,%d\r", in amodem_set_data_registration()
695 modem->data_mode, modem->data_state ); in amodem_set_data_registration()
699 if (modem->supportsNetworkDataType) in amodem_set_data_registration()
700 amodem_unsol( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"\r", in amodem_set_data_registration()
701 modem->data_mode, modem->data_state, in amodem_set_data_registration()
702 modem->area_code & 0xffff, modem->cell_id & 0xffff, in amodem_set_data_registration()
703 modem->data_network ); in amodem_set_data_registration()
705 amodem_unsol( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\"\r", in amodem_set_data_registration()
706 modem->data_mode, modem->data_state, in amodem_set_data_registration()
707 modem->area_code & 0xffff, modem->cell_id & 0xffff ); in amodem_set_data_registration()
716 amodem_nvram_set( AModem modem, const char *name, const char *value ) in amodem_nvram_set() argument
718 aconfig_set(modem->nvram_config, name, value); in amodem_nvram_set()
742 amodem_set_data_network_type( AModem modem, ADataNetworkType type ) in amodem_set_data_network_type() argument
745 modem->data_network = type; in amodem_set_data_network_type()
746 amodem_set_data_registration( modem, modem->data_state ); in amodem_set_data_network_type()
748 if (modem->unsol_func && modemTech != A_TECH_UNKNOWN) { in amodem_set_data_network_type()
749 if (_amodem_switch_technology( modem, modemTech, modem->preferred_mask )) { in amodem_set_data_network_type()
750 modem->unsol_func( modem->unsol_opaque, modem->out_buff ); in amodem_set_data_network_type()
756 amodem_get_operator_name ( AModem modem, ANameIndex index, char* buffer, int buffer_size ) in amodem_get_operator_name() argument
761 if ( (unsigned)modem->oper_index >= (unsigned)modem->oper_count || in amodem_get_operator_name()
765 oper = modem->operators + modem->oper_index; in amodem_get_operator_name()
780 amodem_set_operator_name( AModem modem, ANameIndex index, const char* buffer, int buffer_size ) in amodem_set_operator_name() argument
785 if ( (unsigned)modem->oper_index >= (unsigned)modem->oper_count || in amodem_set_operator_name()
789 oper = modem->operators + modem->oper_index; in amodem_set_operator_name()
803 amodem_get_call_count( AModem modem ) in amodem_get_call_count() argument
805 return modem->call_count; in amodem_get_call_count()
809 amodem_get_call( AModem modem, int index ) in amodem_get_call() argument
811 if ((unsigned)index >= (unsigned)modem->call_count) in amodem_get_call()
814 return &modem->calls[index].call; in amodem_get_call()
818 amodem_alloc_call( AModem modem ) in amodem_alloc_call() argument
821 int count = modem->call_count; in amodem_alloc_call()
827 for (id = 0; id < modem->call_count; id++) { in amodem_alloc_call()
831 if ( modem->calls[nn].call.id == (id+1) ) { in amodem_alloc_call()
839 call = modem->calls + count; in amodem_alloc_call()
841 call->modem = modem; in amodem_alloc_call()
843 modem->call_count += 1; in amodem_alloc_call()
850 amodem_free_call( AModem modem, AVoiceCall call ) in amodem_free_call() argument
860 remote_call_cancel( call->call.number, modem->base_port ); in amodem_free_call()
864 for (nn = 0; nn < modem->call_count; nn++) { in amodem_free_call()
865 if ( modem->calls + nn == call ) in amodem_free_call()
868 assert( nn < modem->call_count ); in amodem_free_call()
870 memmove( modem->calls + nn, in amodem_free_call()
871 modem->calls + nn + 1, in amodem_free_call()
872 (modem->call_count - 1 - nn)*sizeof(*call) ); in amodem_free_call()
874 modem->call_count -= 1; in amodem_free_call()
879 amodem_find_call( AModem modem, int id ) in amodem_find_call() argument
883 for (nn = 0; nn < modem->call_count; nn++) { in amodem_find_call()
884 AVoiceCall call = modem->calls + nn; in amodem_find_call()
892 amodem_send_calls_update( AModem modem ) in amodem_send_calls_update() argument
896 amodem_unsol( modem, "RING\r" ); in amodem_send_calls_update()
901 amodem_add_inbound_call( AModem modem, const char* number ) in amodem_add_inbound_call() argument
903 AVoiceCall vcall = amodem_alloc_call( modem ); in amodem_add_inbound_call()
924 amodem_send_calls_update( modem ); in amodem_add_inbound_call()
929 amodem_find_call_by_number( AModem modem, const char* number ) in amodem_find_call_by_number() argument
931 AVoiceCall vcall = modem->calls; in amodem_find_call_by_number()
932 AVoiceCall vend = vcall + modem->call_count; in amodem_find_call_by_number()
945 amodem_set_signal_strength( AModem modem, int rssi, int ber ) in amodem_set_signal_strength() argument
947 modem->rssi = rssi; in amodem_set_signal_strength()
948 modem->ber = ber; in amodem_set_signal_strength()
959 int port = call->modem->base_port; in acall_set_state()
979 amodem_update_call( AModem modem, const char* fromNumber, ACallState state ) in amodem_update_call() argument
981 AVoiceCall vcall = (AVoiceCall) amodem_find_call_by_number(modem, fromNumber); in amodem_update_call()
987 amodem_send_calls_update(modem); in amodem_update_call()
993 amodem_disconnect_call( AModem modem, const char* number ) in amodem_disconnect_call() argument
995 AVoiceCall vcall = (AVoiceCall) amodem_find_call_by_number(modem, number); in amodem_disconnect_call()
1000 amodem_free_call( modem, vcall ); in amodem_disconnect_call()
1001 amodem_send_calls_update(modem); in amodem_disconnect_call()
1009 unknownCommand( const char* cmd, AModem modem ) in unknownCommand() argument
1011 modem=modem; in unknownCommand()
1038 chooseTechFromMask( AModem modem, int32_t preferred ) in chooseTechFromMask() argument
1059 _amodem_switch_technology( AModem modem, AModemTech newtech, int32_t newpreferred ) in _amodem_switch_technology() argument
1062 modem->technology, newtech, modem->preferred_mask,newpreferred); in _amodem_switch_technology()
1064 assert( modem ); in _amodem_switch_technology()
1069 if (modem->preferred_mask != newpreferred) { in _amodem_switch_technology()
1071 modem->preferred_mask = newpreferred; in _amodem_switch_technology()
1073 amodem_nvram_set(modem, NV_PREFERRED_MODE, value); in _amodem_switch_technology()
1074 if (!matchPreferredMask(modem->preferred_mask, newtech)) { in _amodem_switch_technology()
1075 newtech = chooseTechFromMask(modem, newpreferred); in _amodem_switch_technology()
1079 if (modem->technology != newtech) { in _amodem_switch_technology()
1080 modem->technology = newtech; in _amodem_switch_technology()
1081 ret = amodem_printf(modem, "+CTEC: %d", modem->technology); in _amodem_switch_technology()
1105 amodem_set_cdma_prl_version( AModem modem, int prlVersion) in amodem_set_cdma_prl_version() argument
1108 if (!_amodem_set_cdma_prl_version( modem, prlVersion)) { in amodem_set_cdma_prl_version()
1109 amodem_unsol(modem, "+WPRL: %d", prlVersion); in amodem_set_cdma_prl_version()
1114 _amodem_set_cdma_prl_version( AModem modem, int prlVersion) in _amodem_set_cdma_prl_version() argument
1117 if (modem->prl_version != prlVersion) { in _amodem_set_cdma_prl_version()
1118 modem->prl_version = prlVersion; in _amodem_set_cdma_prl_version()
1125 amodem_set_cdma_subscription_source( AModem modem, ACdmaSubscriptionSource ss) in amodem_set_cdma_subscription_source() argument
1128 if (!_amodem_set_cdma_subscription_source( modem, ss)) { in amodem_set_cdma_subscription_source()
1129 amodem_unsol(modem, "+CCSS: %d", (int)ss); in amodem_set_cdma_subscription_source()
1135 _amodem_set_cdma_subscription_source( AModem modem, ACdmaSubscriptionSource ss) in _amodem_set_cdma_subscription_source() argument
1140 if (ss != modem->subscription_source) { in _amodem_set_cdma_subscription_source()
1142 amodem_nvram_set( modem, NV_CDMA_SUBSCRIPTION_SOURCE, value ); in _amodem_set_cdma_subscription_source()
1143 modem->subscription_source = ss; in _amodem_set_cdma_subscription_source()
1150 handleSubscriptionSource( const char* cmd, AModem modem ) in handleSubscriptionSource() argument
1159 return amodem_printf( modem, "+CCSS: %d", modem->subscription_source ); in handleSubscriptionSource()
1165 _amodem_set_cdma_subscription_source( modem, newsource ); in handleSubscriptionSource()
1166 return amodem_printf( modem, "+CCSS: %d", modem->subscription_source ); in handleSubscriptionSource()
1170 return amodem_printf( modem, "ERROR: Invalid subscription source"); in handleSubscriptionSource()
1174 handleRoamPref( const char * cmd, AModem modem ) in handleRoamPref() argument
1182 return amodem_printf( modem, "+WRMP: %d", modem->roaming_pref ); in handleRoamPref()
1186 return amodem_printf( modem, "+WRMP: 0,1,2" ); in handleRoamPref()
1193 modem->roaming_pref = roaming_pref; in handleRoamPref()
1194 aconfig_set( modem->nvram_config, NV_CDMA_ROAMING_PREF, cmd ); in handleRoamPref()
1195 aconfig_save_file( modem->nvram_config, modem->nvram_config_filename ); in handleRoamPref()
1199 return amodem_printf( modem, "ERROR"); in handleRoamPref()
1202 handleTech( const char* cmd, AModem modem ) in handleTech() argument
1204 AModemTech newtech = modem->technology; in handleTech()
1205 int pt = modem->preferred_mask; in handleTech()
1211 return amodem_printf( modem, "+CTEC: %d,%x",modem->technology, modem->preferred_mask ); in handleTech()
1213 amodem_begin_line( modem ); in handleTech()
1215 return amodem_printf( modem, "+CTEC: 0,1,2,3" ); in handleTech()
1233 return amodem_printf( modem, "ERROR: invalid preferred mode" ); in handleTech()
1234 return _amodem_switch_technology( modem, newtech, pt ); in handleTech()
1236 return amodem_printf( modem, "ERROR: %s: Unknown Technology", cmd + 1 ); in handleTech()
1240 handleEmergencyMode( const char* cmd, AModem modem ) in handleEmergencyMode() argument
1247 return amodem_printf( modem, "+WSOS: %d", modem->in_emergency_mode); in handleEmergencyMode()
1252 return amodem_printf(modem, "+WSOS: (0)"); in handleEmergencyMode()
1255 return amodem_printf(modem, "ERROR"); in handleEmergencyMode()
1260 return amodem_printf(modem, "ERROR"); in handleEmergencyMode()
1265 if ((!arg) != (!modem->in_emergency_mode)) { in handleEmergencyMode()
1266 modem->in_emergency_mode = arg; in handleEmergencyMode()
1267 return amodem_printf(modem, "+WSOS: %d", arg); in handleEmergencyMode()
1270 return amodem_printf(modem, "ERROR"); in handleEmergencyMode()
1274 handlePrlVersion( const char* cmd, AModem modem ) in handlePrlVersion() argument
1279 return amodem_printf( modem, "+WPRL: %d", modem->prl_version); in handlePrlVersion()
1282 return amodem_printf(modem, "ERROR"); in handlePrlVersion()
1286 handleRadioPower( const char* cmd, AModem modem ) in handleRadioPower() argument
1291 modem->radio_state = A_RADIO_STATE_OFF; in handleRadioPower()
1296 modem->radio_state = A_RADIO_STATE_ON; in handleRadioPower()
1302 handleRadioPowerReq( const char* cmd, AModem modem ) in handleRadioPowerReq() argument
1304 if (modem->radio_state != A_RADIO_STATE_OFF) in handleRadioPowerReq()
1311 handleSIMStatusReq( const char* cmd, AModem modem ) in handleSIMStatusReq() argument
1315 switch (asimcard_get_status(modem->sim)) { in handleSIMStatusReq()
1341 handleNetworkRegistration( const char* cmd, AModem modem ) in handleNetworkRegistration() argument
1346 if (modem->voice_mode == A_REGISTRATION_UNSOL_ENABLED_FULL) in handleNetworkRegistration()
1347 return amodem_printf( modem, "+CREG: %d,%d, \"%04x\", \"%04x\"", in handleNetworkRegistration()
1348 modem->voice_mode, modem->voice_state, in handleNetworkRegistration()
1349 modem->area_code, modem->cell_id ); in handleNetworkRegistration()
1351 return amodem_printf( modem, "+CREG: %d,%d", in handleNetworkRegistration()
1352 modem->voice_mode, modem->voice_state ); in handleNetworkRegistration()
1356 modem->voice_mode = A_REGISTRATION_UNSOL_DISABLED; in handleNetworkRegistration()
1360 modem->voice_mode = A_REGISTRATION_UNSOL_ENABLED; in handleNetworkRegistration()
1364 modem->voice_mode = A_REGISTRATION_UNSOL_ENABLED_FULL; in handleNetworkRegistration()
1379 if (modem->supportsNetworkDataType) in handleNetworkRegistration()
1380 return amodem_printf( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"", in handleNetworkRegistration()
1381 modem->data_mode, modem->data_state, in handleNetworkRegistration()
1382 modem->area_code, modem->cell_id, in handleNetworkRegistration()
1383 modem->data_network ); in handleNetworkRegistration()
1385 return amodem_printf( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\"", in handleNetworkRegistration()
1386 modem->data_mode, modem->data_state, in handleNetworkRegistration()
1387 modem->area_code, modem->cell_id ); in handleNetworkRegistration()
1391 modem->data_mode = A_REGISTRATION_UNSOL_DISABLED; in handleNetworkRegistration()
1395 modem->data_mode = A_REGISTRATION_UNSOL_ENABLED; in handleNetworkRegistration()
1399 modem->data_mode = A_REGISTRATION_UNSOL_ENABLED_FULL; in handleNetworkRegistration()
1416 handleSetDialTone( const char* cmd, AModem modem ) in handleSetDialTone() argument
1423 handleDeleteSMSonSIM( const char* cmd, AModem modem ) in handleDeleteSMSonSIM() argument
1430 handleSIM_IO( const char* cmd, AModem modem ) in handleSIM_IO() argument
1432 return asimcard_io( modem->sim, cmd ); in handleSIM_IO()
1437 handleOperatorSelection( const char* cmd, AModem modem ) in handleOperatorSelection() argument
1442 AOperator oper = &modem->operators[ modem->oper_index ]; in handleOperatorSelection()
1444 if ( !amodem_has_network( modem ) ) in handleOperatorSelection()
1447 return amodem_printf( modem, "+CME ERROR: 30" ); in handleOperatorSelection()
1450 oper = &modem->operators[ modem->oper_index ]; in handleOperatorSelection()
1452 if ( modem->oper_name_index == 2 ) in handleOperatorSelection()
1453 return amodem_printf( modem, "+COPS: %d,2,%s", in handleOperatorSelection()
1454 modem->oper_selection_mode, in handleOperatorSelection()
1457 return amodem_printf( modem, "+COPS: %d,%d,\"%s\"", in handleOperatorSelection()
1458 modem->oper_selection_mode, in handleOperatorSelection()
1459 modem->oper_name_index, in handleOperatorSelection()
1460 oper->name[ modem->oper_name_index ] ); in handleOperatorSelection()
1465 amodem_begin_line( modem ); in handleOperatorSelection()
1466 for (nn = 0; nn < modem->oper_count; nn++) { in handleOperatorSelection()
1467 AOperator oper = &modem->operators[nn]; in handleOperatorSelection()
1468 amodem_add_line( modem, "%s(%d,\"%s\",\"%s\",\"%s\")", comma, in handleOperatorSelection()
1472 return amodem_end_line( modem ); in handleOperatorSelection()
1477 modem->oper_selection_mode = A_SELECTION_AUTOMATIC; in handleOperatorSelection()
1500 for (nn = 0; nn < modem->oper_count; nn++) { in handleOperatorSelection()
1501 AOperator oper = modem->operators + nn; in handleOperatorSelection()
1513 } else if (modem->operators[found].status == A_STATUS_DENIED) { in handleOperatorSelection()
1517 modem->oper_index = found; in handleOperatorSelection()
1523 modem->voice_state = A_REGISTRATION_HOME; in handleOperatorSelection()
1524 modem->data_state = A_REGISTRATION_HOME; in handleOperatorSelection()
1526 modem->voice_state = A_REGISTRATION_ROAMING; in handleOperatorSelection()
1527 modem->data_state = A_REGISTRATION_ROAMING; in handleOperatorSelection()
1533 modem->oper_selection_mode = A_SELECTION_DEREGISTRATION; in handleOperatorSelection()
1547 modem->oper_name_index = format; in handleOperatorSelection()
1555 return unknownCommand(cmd,modem); in handleOperatorSelection()
1559 handleRequestOperator( const char* cmd, AModem modem ) in handleRequestOperator() argument
1564 if ( !amodem_has_network(modem) ) in handleRequestOperator()
1567 oper = modem->operators + modem->oper_index; in handleRequestOperator()
1568 modem->oper_name_index = 2; in handleRequestOperator()
1569 return amodem_printf( modem, "+COPS: 0,0,\"%s\"\r" in handleRequestOperator()
1576 handleSendSMStoSIM( const char* cmd, AModem modem ) in handleSendSMStoSIM() argument
1583 handleSendSMS( const char* cmd, AModem modem ) in handleSendSMS() argument
1585 modem->wait_sms = 1; in handleSendSMS()
1649 handleSendSMSText( const char* cmd, AModem modem ) in handleSendSMSText() argument
1703 if (modem->sms_receiver == NULL) { in handleSendSMSText()
1704 modem->sms_receiver = sms_receiver_create(); in handleSendSMSText()
1705 if (modem->sms_receiver == NULL) { in handleSendSMSText()
1711 index = sms_receiver_add_submit_pdu( modem->sms_receiver, pdu ); in handleSendSMSText()
1725 snprintf( temp, sizeof(temp), PHONE_PREFIX "%d", modem->base_port ); in handleSendSMSText()
1728 deliver = sms_receiver_create_deliver( modem->sms_receiver, index, from ); in handleSendSMSText()
1736 if ( remote_call_sms( number, modem->base_port, deliver[nn] ) < 0 ) { in handleSendSMSText()
1781 if ( remote_call_sms( number, modem->base_port, pdu ) < 0 ) in handleSendSMSText()
1801 handleChangeOrEnterPIN( const char* cmd, AModem modem ) in handleChangeOrEnterPIN() argument
1806 switch (asimcard_get_status(modem->sim)) { in handleChangeOrEnterPIN()
1820 if ( !asimcard_check_pin( modem->sim, pin ) ) in handleChangeOrEnterPIN()
1824 asimcard_set_pin( modem->sim, pin ); in handleChangeOrEnterPIN()
1831 if ( asimcard_check_pin( modem->sim, cmd ) ) in handleChangeOrEnterPIN()
1841 if ( asimcard_check_puk( modem->sim, puk, cmd+5 ) ) in handleChangeOrEnterPIN()
1857 handleListCurrentCalls( const char* cmd, AModem modem ) in handleListCurrentCalls() argument
1860 amodem_begin_line( modem ); in handleListCurrentCalls()
1861 for (nn = 0; nn < modem->call_count; nn++) { in handleListCurrentCalls()
1862 AVoiceCall vcall = modem->calls + nn; in handleListCurrentCalls()
1865 amodem_add_line( modem, "+CLCC: %d,%d,%d,%d,%d,\"%s\",%d\r\n", in handleListCurrentCalls()
1869 return amodem_end_line( modem ); in handleListCurrentCalls()
1885 amodem_addTimeUpdate( AModem modem ) in amodem_addTimeUpdate() argument
1935 amodem_add_line( modem, "%%CTZV: %02d/%02d/%02d:%02d:%02d:%02d%c%d:%d:%s\r\n", in amodem_addTimeUpdate()
1944 handleEndOfInit( const char* cmd, AModem modem ) in handleEndOfInit() argument
1946 amodem_begin_line( modem ); in handleEndOfInit()
1947 amodem_addTimeUpdate( modem ); in handleEndOfInit()
1948 return amodem_end_line( modem ); in handleEndOfInit()
1953 handleListPDPContexts( const char* cmd, AModem modem ) in handleListPDPContexts() argument
1957 amodem_begin_line( modem ); in handleListPDPContexts()
1959 ADataContext data = modem->data_contexts + nn; in handleListPDPContexts()
1962 amodem_add_line( modem, "+CGACT: %d,%d\r\n", data->id, data->active ); in handleListPDPContexts()
1964 return amodem_end_line( modem ); in handleListPDPContexts()
1968 handleDefinePDPContext( const char* cmd, AModem modem ) in handleDefinePDPContext() argument
2009 data = modem->data_contexts + id; in handleDefinePDPContext()
2022 handleQueryPDPContext( const char* cmd, AModem modem ) in handleQueryPDPContext() argument
2025 amodem_begin_line(modem); in handleQueryPDPContext()
2027 ADataContext data = modem->data_contexts + nn; in handleQueryPDPContext()
2030 amodem_add_line( modem, "+CGDCONT: %d,\"%s\",\"%s\",\"%s\",0,0\r\n", in handleQueryPDPContext()
2039 return amodem_end_line(modem); in handleQueryPDPContext()
2043 handleStartPDPContext( const char* cmd, AModem modem ) in handleStartPDPContext() argument
2054 AModem modem = vcall->modem; in remote_voice_call_event() local
2061 amodem_free_call(modem, vcall); in remote_voice_call_event()
2062 amodem_send_calls_update(modem); in remote_voice_call_event()
2079 vcall->modem->base_port, in voice_call_event()
2086 amodem_free_call( vcall->modem, vcall ); in voice_call_event()
2103 amodem_send_calls_update(vcall->modem); in voice_call_event()
2106 static int amodem_is_emergency( AModem modem, const char *number ) in amodem_is_emergency() argument
2112 if ( modem->emergency_numbers[i] && !strcmp( number, modem->emergency_numbers[i] )) break; in amodem_is_emergency()
2121 handleDial( const char* cmd, AModem modem ) in handleDial() argument
2123 AVoiceCall vcall = amodem_alloc_call( modem ); in handleDial()
2161 amodem_begin_line( modem ); in handleDial()
2162 if (amodem_is_emergency(modem, call->number)) { in handleDial()
2163 modem->in_emergency_mode = 1; in handleDial()
2164 amodem_add_line( modem, "+WSOS: 1" ); in handleDial()
2172 return amodem_end_line( modem ); in handleDial()
2177 handleAnswer( const char* cmd, AModem modem ) in handleAnswer() argument
2180 for (nn = 0; nn < modem->call_count; nn++) { in handleAnswer()
2181 AVoiceCall vcall = modem->calls + nn; in handleAnswer()
2194 amodem_free_call( modem, vcall ); in handleAnswer()
2206 handleSignalStrength( const char* cmd, AModem modem ) in handleSignalStrength() argument
2208 amodem_begin_line( modem ); in handleSignalStrength()
2215 amodem_addTimeUpdate( modem ); in handleSignalStrength()
2222 int rssi = modem->rssi; in handleSignalStrength()
2223 int ber = modem->ber; in handleSignalStrength()
2226 amodem_add_line( modem, "+CSQ: %i,%i,85,130,90,6,4,25,9,50,68,12\r\n", rssi, ber ); in handleSignalStrength()
2227 return amodem_end_line( modem ); in handleSignalStrength()
2231 handleHangup( const char* cmd, AModem modem ) in handleHangup() argument
2238 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2239 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2246 amodem_free_call(modem, vcall); in handleHangup()
2254 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2255 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2260 amodem_free_call(modem, vcall); in handleHangup()
2270 AVoiceCall vcall = amodem_find_call( modem, id ); in handleHangup()
2272 amodem_free_call( modem, vcall ); in handleHangup()
2278 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2279 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2293 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2294 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2306 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2307 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2319 for (nn = 0; nn < modem->call_count; nn++) { in handleHangup()
2320 AVoiceCall vcall = modem->calls + nn; in handleHangup()
2340 typedef const char* (*ResponseHandler)(const char* cmd, AModem modem);
2476 const char* amodem_send( AModem modem, const char* cmd ) in amodem_send() argument
2480 if ( modem->wait_sms != 0 ) { in amodem_send()
2481 modem->wait_sms = 0; in amodem_send()
2483 answer = handleSendSMSText( cmd, modem ); in amodem_send()
2532 REPLY( amodem_printf( modem, "%s\rOK", answer ) ); in amodem_send()
2539 answer = handler( cmd, modem ); in amodem_send()
2550 if (answer != modem->out_buff) in amodem_send()
2551 REPLY( amodem_printf( modem, "%s\rOK", answer ) ); in amodem_send()
2553 strcat( modem->out_buff, "\rOK" ); in amodem_send()