Re: [PATCH] udevng: Add support for Quectel BG96 modem
by Martin Hundebøll
Hi Sean,
On 11/25/19 9:26 AM, Sean Nyekjaer wrote:
> Signed-off-by: Sean Nyekjaer <sean(a)geanix.com>
No signoff when submitting to ofono.
// Martin
> ---
> plugins/udevng.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/plugins/udevng.c b/plugins/udevng.c
> index 40ed2b02..cc294c94 100644
> --- a/plugins/udevng.c
> +++ b/plugins/udevng.c
> @@ -1790,6 +1790,8 @@ static struct {
> { "quectelqmi", "qcserial", "2c7c", "0121" },
> { "quectelqmi", "qmi_wwan", "2c7c", "0125" },
> { "quectelqmi", "qcserial", "2c7c", "0125" },
> + { "quectelqmi", "qmi_wwan", "2c7c", "0296" },
> + { "quectelqmi", "qcserial", "2c7c", "0296" },
> { "ublox", "cdc_acm", "1546", "1010" },
> { "ublox", "cdc_ncm", "1546", "1010" },
> { "ublox", "cdc_acm", "1546", "1102" },
>
7 months, 2 weeks
Telit ME910C1-WW not detected
by Dresdo Gabriele
Hello,
I'm new to oFono, I'm trying to setup a Telit ME910C1 with oFono 1.18 in our embedded system (ARMHF) with Debian stretch kernel 4.9.11 but list-modems returns no results.
I installed ofono packet using apt-get
I can send and receive AT commands to the modem using a terminal connected to /dev/ttyUSB1
I paste Log from ofonod -dn.
Any suggestion will be useful
Thanks
Gabriele
ofonod[592]: oFono version 1.18
ofonod[592]: src/plugin.c:__ofono_plugin_init()
ofonod[592]: plugins/push-notification.c:push_notification_init()
ofonod[592]: plugins/smart-messaging.c:smart_messaging_init()
ofonod[592]: src/cdma-provision.c:ofono_cdma_provision_driver_register() driver: 0x54c3f868 name: CDMA provisioning
ofonod[592]: src/gprs-provision.c:ofono_gprs_provision_driver_register() driver: 0x54c3f83c name: Provisioning
ofonod[592]: plugins/upower.c:upower_init() upower init
ofonod[592]: src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x54c3f7e8
ofonod[592]: plugins/dun_gw_bluez5.c:dun_gw_init()
ofonod[592]: src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x54c3f74c
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f760, name: hfp
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f704, name: ublox
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f6ac, name: quectel
ofonod[592]: plugins/he910.c:he910_init()
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f65c, name: he910
ofonod[592]: plugins/connman.c:connman_init()
ofonod[592]: src/private-network.c:ofono_private_network_driver_register() driver: 0x54c3f630, name: ConnMan Private Network
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f5e8, name: sim900
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f5a0, name: samsung
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f558, name: speedupcdma
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f508, name: speedup
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f4c0, name: alcatel
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f468, name: icera
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f420, name: linktop
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f3d8, name: nokiacdma
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f390, name: nokia
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f348, name: cinterion
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f2c0, name: ste
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f268, name: ifx
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f220, name: palmpre
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f1d0, name: novatel
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f188, name: sierra
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f110, name: huawei
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f0c8, name: zte
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f068, name: hso
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3f018, name: mbm
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3efc8, name: calypso
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3ef80, name: wavecom
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3ef38, name: g1
ofonod[592]: src/cdma-voicecall.c:ofono_cdma_voicecall_driver_register() driver: 0x54c3eedc, name: cdmamodem
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3ef04, name: cdmamodem
ofonod[592]: src/cdma-connman.c:ofono_cdma_connman_driver_register() driver: 0x54c3ef24, name: cdmamodem
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3ee3c, name: phonesim
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3ee6c, name: localhfp
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3ee20, name: phonesim
ofonod[592]: src/ctm.c:ofono_ctm_driver_register() driver: 0x54c3ee0c, name: phonesim
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3ede4, name: phonesim
ofonod[592]: plugins/phonesim.c:parse_config() filename /etc/ofono/phonesim.conf
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3edc8, name: ubloxmodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3ed8c, name: speedupmodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3ec48, name: hfpmodem
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3ecec, name: hfpmodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3eca0, name: hfpmodem
ofonod[592]: src/call-volume.c:ofono_call_volume_driver_register() driver: 0x54c3ecd4, name: hfpmodem
ofonod[592]: src/handsfree.c:ofono_handsfree_driver_register() driver: 0x54c3ed1c, name: hfpmodem
ofonod[592]: src/siri.c:ofono_siri_driver_register() driver: 0x54c3ed54, name: hfpmodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3ebc0, name: dunmodem
ofonod[592]: src/gprs.c:ofono_gprs_driver_register() driver: 0x54c3ebe4, name: dunmodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3eaf0, name: stemodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3eb7c, name: stemodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3eb40, name: stemodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3e9cc, name: ifxmodem
ofonod[592]: src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x54c3ea24, name: ifxmodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3ea38, name: ifxmodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3ea70, name: ifxmodem
ofonod[592]: src/stk.c:ofono_stk_driver_register() driver: 0x54c3ea9c, name: ifxmodem
ofonod[592]: src/ctm.c:ofono_ctm_driver_register() driver: 0x54c3eabc, name: ifxmodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e958, name: hsomodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e97c, name: hsomodem
ofonod[592]: src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x54c3e918, name: telitmodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e88c, name: mbmmodem
ofonod[592]: src/stk.c:ofono_stk_driver_register() driver: 0x54c3e8b0, name: mbmmodem
ofonod[592]: src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x54c3e8d0, name: mbmmodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3e7f4, name: calypsomodem
ofonod[592]: src/stk.c:ofono_stk_driver_register() driver: 0x54c3e844, name: calypsomodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3e6f8, name: huaweimodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3e70c, name: huaweimodem
ofonod[592]: src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x54c3e75c, name: huaweimodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e794, name: huaweimodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e770, name: huaweimodem
ofonod[592]: src/cdma-netreg.c:ofono_cdma_netreg_driver_register() driver: 0x54c3e7c4, name: huaweimodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e67c, name: iceramodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e6a8, name: iceramodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e624, name: ztemodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e5e0, name: swmodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e598, name: nwmodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3e40c, name: atmodem
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3e4a4, name: atmodem
ofonod[592]: src/call-barring.c:ofono_call_barring_driver_register() driver: 0x54c3e45c, name: atmodem
ofonod[592]: src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x54c3e1e4, name: atmodem
ofonod[592]: src/call-meter.c:ofono_call_meter_driver_register() driver: 0x54c3e224, name: atmodem
ofonod[592]: src/call-settings.c:ofono_call_settings_driver_register() driver: 0x54c3e130, name: atmodem
ofonod[592]: src/phonebook.c:ofono_phonebook_driver_register() driver: 0x54c3e48c, name: atmodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3e3e8, name: atmodem
ofonod[592]: src/sms.c:ofono_sms_driver_register() driver: 0x54c3e1a0, name: atmodem
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3e328, name: atmodem
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3e370, name: atmodem-noef
ofonod[592]: src/stk.c:ofono_stk_driver_register() driver: 0x54c3e3c0, name: atmodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3e288, name: atmodem
ofonod[592]: src/cbs.c:ofono_cbs_driver_register() driver: 0x54c3e1c8, name: atmodem
ofonod[592]: src/call-volume.c:ofono_call_volume_driver_register() driver: 0x54c3e4d4, name: atmodem
ofonod[592]: src/gprs.c:ofono_gprs_driver_register() driver: 0x54c3e504, name: atmodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e518, name: atmodem
ofonod[592]: src/sim-auth.c:ofono_sim_auth_driver_register() driver: 0x54c3e53c, name: atmodem
ofonod[592]: src/gnss.c:ofono_gnss_driver_register() driver: 0x54c3e55c, name: atmodem
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3e090, name: gobi
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3ded0, name: qmimodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3df38, name: qmimodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3def0, name: qmimodem
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3df5c, name: qmimodem-legacy
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3dfa4, name: qmimodem
ofonod[592]: src/sms.c:ofono_sms_driver_register() driver: 0x54c3dfec, name: qmimodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3e00c, name: qmimodem
ofonod[592]: src/gprs.c:ofono_gprs_driver_register() driver: 0x54c3e020, name: qmimodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3e034, name: qmimodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3e050, name: qmimodem
ofonod[592]: src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x54c3e078, name: qmimodem
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3de68, name: u8500
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3de48, name: u8500
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3de00, name: n900
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3ddb8, name: isiusb
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3db60, name: isimodem
ofonod[592]: src/phonebook.c:ofono_phonebook_driver_register() driver: 0x54c3db50, name: isimodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3db80, name: isimodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3dba4, name: isimodem
ofonod[592]: src/sms.c:ofono_sms_driver_register() driver: 0x54c3dbec, name: isimodem
ofonod[592]: src/cbs.c:ofono_cbs_driver_register() driver: 0x54c3dc0c, name: isimodem
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3dc20, name: isimodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3dc68, name: isimodem
ofonod[592]: src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x54c3dc7c, name: isimodem
ofonod[592]: src/call-settings.c:ofono_call_settings_driver_register() driver: 0x54c3dc9c, name: isimodem
ofonod[592]: src/call-barring.c:ofono_call_barring_driver_register() driver: 0x54c3dccc, name: isimodem
ofonod[592]: src/call-meter.c:ofono_call_meter_driver_register() driver: 0x54c3dce4, name: isimodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3dd0c, name: isimodem
ofonod[592]: src/gprs.c:ofono_gprs_driver_register() driver: 0x54c3dd34, name: isimodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3dd48, name: isimodem
ofonod[592]: src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x54c3dd64, name: isimodem
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3dd70, name: wgmodem2.5
ofonod[592]: drivers/rilmodem/rilmodem.c:rilmodem_init()
ofonod[592]: src/modem.c:ofono_devinfo_driver_register() driver: 0x54c3d928, name: rilmodem
ofonod[592]: drivers/rilmodem/sim.c:ril_sim_init()
ofonod[592]: src/sim.c:ofono_sim_driver_register() driver: 0x54c3d9fc, name: rilmodem
ofonod[592]: src/voicecall.c:ofono_voicecall_driver_register() driver: 0x54c3d96c, name: rilmodem
ofonod[592]: src/sms.c:ofono_sms_driver_register() driver: 0x54c3da44, name: rilmodem
ofonod[592]: src/network.c:ofono_netreg_driver_register() driver: 0x54c3d948, name: rilmodem
ofonod[592]: src/call-volume.c:ofono_call_volume_driver_register() driver: 0x54c3d9b4, name: rilmodem
ofonod[592]: src/gprs.c:ofono_gprs_driver_register() driver: 0x54c3d9cc, name: rilmodem
ofonod[592]: src/gprs.c:ofono_gprs_context_driver_register() driver: 0x54c3d9e0, name: rilmodem
ofonod[592]: src/ussd.c:ofono_ussd_driver_register() driver: 0x54c3da64, name: rilmodem
ofonod[592]: src/call-settings.c:ofono_call_settings_driver_register() driver: 0x54c3da78, name: rilmodem
ofonod[592]: src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x54c3daa8, name: rilmodem
ofonod[592]: src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x54c3dac8, name: rilmodem
ofonod[592]: src/call-barring.c:ofono_call_barring_driver_register() driver: 0x54c3daf0, name: rilmodem
ofonod[592]: src/netmon.c:ofono_netmon_driver_register() driver: 0x54c3db08, name: rilmodem
ofonod[592]: src/stk.c:ofono_stk_driver_register() driver: 0x54c3db18, name: rilmodem
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3d8c0, name: ril_sofia3gr
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3d878, name: infineon
ofonod[592]: src/modem.c:ofono_modem_driver_register() driver: 0x54c3d830, name: ril
ofonod[592]: plugins/udevng.c:udev_start()
ofonod[592]: plugins/udevng.c:enumerate_devices()
ofonod[592]: plugins/udevng.c:check_usb_device() hub [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() hub [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() usb [0424:2514]
ofonod[592]: plugins/udevng.c:check_usb_device() usb [1bc7:1101]
ofonod[592]: plugins/udevng.c:check_usb_device() option [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() option [1bc7:1101]
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[592]: plugins/udevng.c:add_device() /dev/ttyUSB0 (telit) 255/255/255 [00] ==> (null) (null)
ofonod[592]: plugins/udevng.c:check_usb_device() option [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() option [1bc7:1101]
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3/2-1.3:1.1/ttyUSB1/tty/ttyUSB1
ofonod[592]: plugins/udevng.c:add_device() /dev/ttyUSB1 (telit) 255/255/255 [01] ==> (null) (null)
ofonod[592]: plugins/udevng.c:check_usb_device() option [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() option [1bc7:1101]
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3/2-1.3:1.2/ttyUSB2/tty/ttyUSB2
ofonod[592]: plugins/udevng.c:add_device() /dev/ttyUSB2 (telit) 255/254/255 [02] ==> (null) (null)
ofonod[592]: plugins/udevng.c:check_usb_device() option [(null):(null)]
ofonod[592]: plugins/udevng.c:check_usb_device() option [1bc7:1101]
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:add_device() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3/2-1.3:1.3/ttyUSB3/tty/ttyUSB3
ofonod[592]: plugins/udevng.c:add_device() /dev/ttyUSB3 (telit) 255/255/255 [03] ==> (null) (null)
ofonod[592]: plugins/udevng.c:check_usb_device() hub [(null):(null)]
ofonod[592]: plugins/udevng.c:create_modem() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:create_modem() driver=telit
ofonod[592]: src/modem.c:ofono_modem_create() name: (null), type: telit
ofonod[592]: plugins/udevng.c:setup_telit() /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3
ofonod[592]: plugins/udevng.c:setup_telit() /dev/ttyUSB0 255/255/255 00 (null)
ofonod[592]: plugins/udevng.c:setup_telit() /dev/ttyUSB1 255/255/255 01 (null)
ofonod[592]: plugins/udevng.c:setup_telit() /dev/ttyUSB2 255/254/255 02 (null)
ofonod[592]: plugins/udevng.c:setup_telit() /dev/ttyUSB3 255/255/255 03 (null)
ofonod[592]: plugins/udevng.c:setup_telit() modem=/dev/ttyUSB0 aux=/dev/ttyUSB3 gps=(null) diag=/dev/ttyUSB1
ofonod[592]: src/modem.c:set_modem_property() modem 0x55d8e3d8 property Modem
ofonod[592]: src/modem.c:set_modem_property() modem 0x55d8e3d8 property Aux
ofonod[592]: src/modem.c:set_modem_property() modem 0x55d8e3d8 property GPS
ofonod[592]: src/modem.c:ofono_modem_register() 0x55d8e3d8
12 months
4G LTE GPRS Attach error?
by JH
Sorry missing the subject, I further checked, it is not SIM issue,
then I am confused, does the 4G LTE is really using the old 2G GRPS?
Appreciate comments what is that error really means?
Thank you.
- jh
On 11/20/19, JH <jupiter.hce(a)gmail.com> wrote:
> Hi,
>
> I have two 4G LTE devices, one can connect to 4G network, one could
> not and has following error from connman log file:
>
> Failed to change property: /ubloxqmi_0/context1
> org.ofono.ConnectionContext.Active: org.ofono.Error.AttachInProgress
> GPRS Attach is in progress
>
> Does the error indicate the SIM is not activated? Or what could be the
> problem?
>
> Thank you.
>
> Kind regards,
>
> - jh
>
1 year, 2 months
[PATCH] - oFono v1.31 stuck in loop when unplugging a USB dongle
connected via PPP
by Jimmy Gysens
Hi,
After unplugging a Huawei USB dongle, the 'atoms' in oFono are removed via 'flush_atoms'.
Every atom has a destruct function pointer, used as a - yes - destructor.
When unplugging a dongle, connected via PPP, oFono will remove the current GPRS context (= data connection).
The function calls are:
flush_atoms -> destruct -> gprs_context_remove -> at_gprs_context_remove -> modem_disconnect
Because the device is physically removed, the IO channel for the AT port is gone.
In 'at_gprs_context_remove', there is an attempt to resume communication over that AT port, but that
is not possible. This is detected, and 'io_disconnect' (pointer to 'modem_disconnect') is called.
'modem_disconnect' has the same atom and tries to remove it again, so it calls the same destructor.
modem_disconnect -> destruct -> gprs_context_remove -> at_gprs_context_remove -> modem_disconnect
And the loop is started.
The easiest way to fix this, is to move the GPRS context removal. After a disconnect, oFono tries to
re-open the AT port. If that fails (and it will in this case), we're done, since 'modem_disconnect' returns.
In case the AT port can be opened, for example, when setting up a new connection, the previous GPRS context
is removed.
The old GPRS context is removed via:
- 'flush_atoms' in case the USB device is physically removed.
- 'modem_disconnect' in case a new connection is being set up.
The loop hereby is fixed, without altering general functionality of oFono. This fix is limited to Huawei devices and has been tested using the following devices:
- E3531i-2
- E3372
- E3531s-2
- E369
- E1552
The patch itself:
---
ofono-1.31/plugins/huawei.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/ofono-1.31/plugins/huawei.c b/ofono-1.31/plugins/huawei.c
index bdf7bc3..bb87670 100644
--- a/ofono-1.31/plugins/huawei.c
+++ b/ofono-1.31/plugins/huawei.c
@@ -583,9 +583,6 @@ static void modem_disconnect(gpointer user_data)
g_at_chat_unref(data->modem);
data->modem = NULL;
- /* close gprs context driver */
- ofono_gprs_context_remove(data->gc);
-
/* reopen modem channel */
data->modem = open_device(modem, "Modem", "Modem: ");
@@ -594,6 +591,10 @@ static void modem_disconnect(gpointer user_data)
return;
}
+ /* close previous gprs context driver */
+ if (data->gc)
+ ofono_gprs_context_remove(data->gc);
+
/* configure modem channel */
g_at_chat_set_disconnect_function(data->modem, modem_disconnect, modem);
g_at_chat_set_slave(data->modem, data->pcui);
--
2.17.1
A review and upstream fix would be appreciated.
Thank you.
Best regards,
Jimmy
1 year, 3 months
(no subject)
by JH
Hi,
I have two 4G LTE devices, one can connect to 4G network, one could
not and has following error from connman log file:
Failed to change property: /ubloxqmi_0/context1
org.ofono.ConnectionContext.Active: org.ofono.Error.AttachInProgress
GPRS Attach is in progress
Does the error indicate the SIM is not activated? Or what could be the problem?
Thank you.
Kind regards,
- jh
1 year, 3 months
[PATCH] test: make all files executable
by David Lechner
This sets the executable bit on the only two files in the test directory
that do not already have it set.
---
test/set-sms-alphabet | 0
test/test-serving-cell-info | 0
2 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 test/set-sms-alphabet
mode change 100644 => 100755 test/test-serving-cell-info
diff --git a/test/set-sms-alphabet b/test/set-sms-alphabet
old mode 100644
new mode 100755
diff --git a/test/test-serving-cell-info b/test/test-serving-cell-info
old mode 100644
new mode 100755
--
2.20.1
1 year, 3 months
Modernize phonesim codebase
by Jonah Brüchert
Dear maintainers,
as mentioned earlier I'm now sending the remaining patches to ofono phonesim.
I tried to split them up logically and to explain them in their descriptions. If anything is still unclear, please ask.
Overall the patchset fixes all compiler warnings that appear with the recommedations of Qt, as found in QtCreator.
The changes that have been made automatically using clang tooling are marked as such in their descriptions, and should be reproducible when running clang-tidy again.
Some of the patches are independent of the others and can be left out if not wanted.
I'd still require some help testing the scripting functionality after my changes. If someone has a working scripting setup, I'd be glad if they could test this.
The changes related to scripting are basically a switch of the java script engine from the deprecated QtScript to QtQml.
Kind regards,
Jonah
1 year, 3 months
[PATCH] xmm7xxx: Introduce eUICC related changes for Gemalto's LPA
by Antara Borwankar
xmm7xxx modem plugin will support Gemalto's eUICC LPA functionality,
which includes opening a logical channel to ISDR applet in eUICC and
transmitting APDU command for Profile Download, Profile Activate etc.
from LPA to the eUICC and deliver the response from eUICC to LPA.
---
plugins/xmm7xxx.c | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 357 insertions(+)
diff --git a/plugins/xmm7xxx.c b/plugins/xmm7xxx.c
index a544798..d386f79 100644
--- a/plugins/xmm7xxx.c
+++ b/plugins/xmm7xxx.c
@@ -62,6 +62,7 @@
#define OFONO_COEX_INTERFACE OFONO_SERVICE ".intel.LteCoexistence"
#define OFONO_COEX_AGENT_INTERFACE OFONO_SERVICE ".intel.LteCoexistenceAgent"
+#define OFONO_EUICC_LPA_INTERFACE OFONO_SERVICE ".intel.EuiccLpa"
#define NET_BAND_LTE_INVALID 0
#define NET_BAND_LTE_1 101
@@ -73,6 +74,8 @@
static const char *none_prefix[] = { NULL };
static const char *xsimstate_prefix[] = { "+XSIMSTATE:", NULL };
static const char *xnvmplmn_prefix[] = { "+XNVMPLMN:", NULL };
+static const char *ccho_prefix[] = { "+CCHO:", NULL };
+static const char *cgla_prefix[] = { "+CGLA:", NULL };
struct bt_coex_info {
int safe_tx_min;
@@ -110,6 +113,356 @@ struct xmm7xxx_data {
unsigned int netreg_watch;
};
+/* eUICC Implementation */
+#define EUICC_EID_CMD "80e2910006BF3E035C015A00"
+#define EUICC_ISDR_AID "A0000005591010FFFFFFFF8900000100"
+
+struct xmm7xxx_euicc {
+ GAtChat *chat;
+ struct ofono_modem *modem;
+
+ char *eid;
+ int channel;
+ char *command;
+ int length;
+ DBusMessage *pending;
+ ofono_bool_t is_registered;
+};
+
+static char *euiccCmdBytesToHexString(const unsigned char *DataBytes,
+ int dataSize, int *bufferStringSize)
+{
+ int offset = 0;
+ char *BufferString = NULL;
+ *bufferStringSize = dataSize * 2;
+
+ if (DataBytes) {
+ BufferString = g_new0(char, *bufferStringSize + 1);
+ while (offset < dataSize) {
+ sprintf(&BufferString[offset * 2], "%02x",
+ DataBytes[offset]);
+ offset++;
+ }
+ }
+
+ return BufferString;
+}
+
+static unsigned char *euiccRspStringToBytes(const char *DataString,
+ int dataSize, int *bufferBytesSize)
+{
+ int offset = 0, tmp;
+ unsigned char *BufferBytes = NULL;
+ *bufferBytesSize = dataSize / 2;
+
+ if (DataString) {
+ BufferBytes = g_new0(unsigned char, *bufferBytesSize);
+
+ while (offset < *bufferBytesSize) {
+ sscanf(&DataString[offset * 2], "%02x", &tmp);
+ BufferBytes[offset] = tmp;
+ offset++;
+ }
+ }
+
+ return BufferBytes;
+}
+
+static void euicc_cleanup(void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+
+ g_free(euicc->command);
+ g_free(euicc->eid);
+ g_free(euicc->pending);
+ g_free(euicc);
+}
+
+static void euicc_release_isdr(struct xmm7xxx_euicc *euicc)
+{
+ char buff[20];
+
+ snprintf(buff, sizeof(buff), "AT+CCHC=%u", euicc->channel);
+
+ g_at_chat_send(euicc->chat, buff, none_prefix, NULL, NULL, NULL);
+
+ euicc->channel = -1;
+ g_free(euicc->command);
+ euicc->command = NULL;
+ euicc->length = 0;
+}
+
+static void euicc_pending_reply(struct xmm7xxx_euicc *euicc,
+ const char *resp)
+{
+ DBusMessage *reply;
+ DBusConnection *conn = ofono_dbus_get_connection();
+ DBusMessageIter iter, array;
+ unsigned char *response;
+ int length;
+
+ DBG("");
+ response = euiccRspStringToBytes(resp, strlen(resp), &length);
+
+ reply = dbus_message_new_method_return(euicc->pending);
+ if (reply == NULL)
+ return;
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ DBUS_TYPE_BYTE_AS_STRING, &array);
+
+ dbus_message_iter_append_fixed_array(&array, DBUS_TYPE_BYTE,
+ &response, length);
+
+ dbus_message_iter_close_container(&iter, &array);
+
+ if (dbus_connection_send(conn, reply, NULL) == FALSE)
+ return;
+
+ dbus_message_unref(reply);
+ dbus_message_unref(euicc->pending);
+ euicc->pending = NULL;
+
+ g_free(response);
+}
+
+static DBusMessage *euicc_get_properties(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+ DBusMessage *reply;
+ DBusMessageIter iter;
+ DBusMessageIter dict;
+ const char *eid = NULL;
+
+ reply = dbus_message_new_method_return(msg);
+ if (reply == NULL)
+ return NULL;
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ OFONO_PROPERTIES_ARRAY_SIGNATURE,
+ &dict);
+
+ eid = euicc->eid;
+ ofono_dbus_dict_append(&dict, "EID", DBUS_TYPE_STRING, &eid);
+
+ dbus_message_iter_close_container(&iter, &dict);
+
+ return reply;
+}
+
+static DBusMessage *euicc_transmit_pdu(DBusConnection *conn,
+ DBusMessage *msg, void *data);
+
+static const GDBusMethodTable euicc_methods[] = {
+ { GDBUS_ASYNC_METHOD("TransmitLpaApdu",
+ GDBUS_ARGS({ "pdu", "ay" }),
+ GDBUS_ARGS({ "pdu", "ay" }),
+ euicc_transmit_pdu) },
+ { GDBUS_ASYNC_METHOD("GetProperties",
+ NULL, GDBUS_ARGS({ "properties", "a{sv}" }),
+ euicc_get_properties) },
+ { }
+};
+
+static const GDBusSignalTable euicc_signals[] = {
+ { GDBUS_SIGNAL("PropertyChanged",
+ GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+ { }
+};
+
+static void euicc_register(struct xmm7xxx_euicc *euicc)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = ofono_modem_get_path(euicc->modem);
+
+ DBG("");
+ if (!g_dbus_register_interface(conn, path, OFONO_EUICC_LPA_INTERFACE,
+ euicc_methods,
+ euicc_signals,
+ NULL, euicc, euicc_cleanup)) {
+ ofono_error("Could not register %s interface under %s",
+ OFONO_EUICC_LPA_INTERFACE, path);
+ return;
+ }
+
+ ofono_modem_add_interface(euicc->modem, OFONO_EUICC_LPA_INTERFACE);
+
+ euicc->is_registered = TRUE;
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_EUICC_LPA_INTERFACE, "EID",
+ DBUS_TYPE_STRING, &euicc->eid);
+}
+
+static void euicc_send_cmd_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct xmm7xxx_euicc *euicc = user_data;
+ GAtResultIter iter;
+ int length;
+ const char *resp;
+
+ DBG("ok %d", ok);
+
+ euicc_release_isdr(euicc);
+
+ if (!ok) {
+ g_free(euicc->command);
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ g_free(euicc);
+ }
+
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CGLA:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &length))
+ return;
+
+ if (!g_at_result_iter_next_string(&iter, &resp))
+ return;
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ euicc->eid = g_strdup(resp+10);
+
+ /* eid is present register interface*/
+ euicc_register(euicc);
+ }
+
+ if (euicc->pending)
+ euicc_pending_reply(euicc, resp);
+}
+
+static void euicc_send_cmd(struct xmm7xxx_euicc *euicc)
+{
+ char *buff = g_new0(char, euicc->length + 20);
+
+ sprintf(buff, "AT+CGLA=%u,%u,\"%s\"",
+ euicc->channel, euicc->length, euicc->command);
+
+ g_at_chat_send(euicc->chat, buff, cgla_prefix,
+ euicc_send_cmd_cb, euicc, NULL);
+
+ g_free(buff);
+}
+
+static void euicc_select_isdr_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct xmm7xxx_euicc *euicc = user_data;
+ GAtResultIter iter;
+
+ DBG("ok %d", ok);
+
+ if (!ok) {
+ g_free (euicc->command);
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ g_free(euicc);
+ }
+
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CCHO:"))
+ return;
+
+ g_at_result_iter_next_number(&iter, &euicc->channel);
+
+ euicc_send_cmd(euicc);
+}
+
+static void euicc_select_isdr(struct xmm7xxx_euicc *euicc)
+{
+ char buff[50];
+
+ snprintf(buff, sizeof(buff), "AT+CCHO=\"%s\"", EUICC_ISDR_AID);
+
+ g_at_chat_send(euicc->chat, buff, ccho_prefix,
+ euicc_select_isdr_cb, euicc, NULL);
+}
+
+static DBusMessage *euicc_transmit_pdu(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+ DBusMessageIter iter, array;
+ const unsigned char *command;
+ int length;
+
+ DBG("");
+ if (euicc->pending)
+ return __ofono_error_busy(msg);
+
+ if (!dbus_message_iter_init(msg, &iter))
+ return __ofono_error_invalid_args(msg);
+
+ dbus_message_iter_recurse(&iter, &array);
+ dbus_message_iter_get_fixed_array(&array, &command, &length);
+
+ g_free(euicc->command);
+ euicc->command = euiccCmdBytesToHexString(command, length,
+ &euicc->length);
+
+ euicc->pending = dbus_message_ref(msg);
+ euicc_select_isdr(euicc);
+
+ return NULL;
+}
+
+static void euicc_update_eid(struct xmm7xxx_euicc *euicc)
+{
+ g_free(euicc->command);
+ euicc->command = g_strdup(EUICC_EID_CMD);
+ euicc->length = sizeof(EUICC_EID_CMD) - 1;
+
+ euicc_select_isdr(euicc);
+}
+
+static void xmm_euicc_enable(struct ofono_modem *modem, void *data)
+{
+ struct xmm7xxx_euicc *euicc = g_new0(struct xmm7xxx_euicc, 1);
+
+ DBG("euicc enable");
+
+ euicc->chat = data;
+ euicc->modem = modem;
+ euicc->eid = g_strdup("INVALID");
+ euicc->channel = -1;
+ euicc->command = NULL;
+ euicc->pending = NULL;
+ euicc->is_registered = FALSE;
+
+ euicc_update_eid(euicc);
+}
+
+static void xmm_euicc_disable(struct ofono_modem *modem)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = ofono_modem_get_path(modem);
+
+ if (g_dbus_unregister_interface(conn, path,
+ OFONO_EUICC_LPA_INTERFACE))
+ ofono_modem_remove_interface(modem,
+ OFONO_EUICC_LPA_INTERFACE);
+}
+/* eUICC Implementation Ends */
+
/* Coex Implementation */
enum wlan_bw {
WLAN_BW_UNSUPPORTED = -1,
@@ -1181,6 +1534,8 @@ static int xmm7xxx_disable(struct ofono_modem *modem)
data->netreg_watch = 0;
}
+ xmm_euicc_disable(modem);
+
return -EINPROGRESS;
}
@@ -1193,6 +1548,7 @@ static void xmm7xxx_pre_sim(struct ofono_modem *modem)
ofono_devinfo_create(modem, OFONO_VENDOR_IFX, "atmodem", data->chat);
data->sim = ofono_sim_create(modem, OFONO_VENDOR_XMM, "atmodem",
data->chat);
+ xmm_euicc_enable(modem, data->chat);
}
static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -1290,6 +1646,7 @@ static int xmm7xxx_probe(struct ofono_modem *modem)
DBG("%p", modem);
data = g_try_new0(struct xmm7xxx_data, 1);
+
if (data == NULL)
return -ENOMEM;
--
1.9.1
1 year, 3 months
[PATCH] xmm7xxx: Introduce eUICC related changes for Gemalto's LPA
by Antara Borwankar
xmm7xxx modem plugin will support Gemalto's eUICC LPA functionality,
which includes opening a logical channel to ISDR applet in eUICC and
transmitting APDU command for Profile Download, Profile Activate etc.
from LPA to the eUICC and deliver the response from eUICC to LPA.
---
plugins/xmm7xxx.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 313 insertions(+)
diff --git a/plugins/xmm7xxx.c b/plugins/xmm7xxx.c
index a544798..cb0a587 100644
--- a/plugins/xmm7xxx.c
+++ b/plugins/xmm7xxx.c
@@ -62,6 +62,7 @@
#define OFONO_COEX_INTERFACE OFONO_SERVICE ".intel.LteCoexistence"
#define OFONO_COEX_AGENT_INTERFACE OFONO_SERVICE ".intel.LteCoexistenceAgent"
+#define OFONO_EUICC_LPA_INTERFACE OFONO_SERVICE ".intel.EuiccLpa"
#define NET_BAND_LTE_INVALID 0
#define NET_BAND_LTE_1 101
@@ -73,6 +74,8 @@
static const char *none_prefix[] = { NULL };
static const char *xsimstate_prefix[] = { "+XSIMSTATE:", NULL };
static const char *xnvmplmn_prefix[] = { "+XNVMPLMN:", NULL };
+static const char *ccho_prefix[] = { "+CCHO:", NULL };
+static const char *cgla_prefix[] = { "+CGLA:", NULL };
struct bt_coex_info {
int safe_tx_min;
@@ -110,6 +113,312 @@ struct xmm7xxx_data {
unsigned int netreg_watch;
};
+/* eUICC Implementation */
+#define EUICC_EID_CMD "80e2910006BF3E035C015A00"
+#define EUICC_ISDR_AID "A0000005591010FFFFFFFF8900000100"
+
+struct xmm7xxx_euicc {
+ GAtChat *chat;
+ struct ofono_modem *modem;
+
+ char *eid;
+ int channel;
+ char *command;
+ int length;
+ DBusMessage *pending;
+ ofono_bool_t is_registered;
+};
+
+static void euicc_cleanup(void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+
+ g_free(euicc->command);
+ g_free(euicc->eid);
+ g_free(euicc->pending);
+ g_free(euicc);
+}
+
+static void euicc_release_isdr(struct xmm7xxx_euicc *euicc)
+{
+ char buff[20];
+
+ snprintf(buff, sizeof(buff), "AT+CCHC=%u", euicc->channel);
+
+ g_at_chat_send(euicc->chat, buff, none_prefix, NULL, NULL, NULL);
+
+ euicc->channel = -1;
+ g_free(euicc->command);
+ euicc->command = NULL;
+}
+
+static void euicc_pending_reply(struct xmm7xxx_euicc *euicc,
+ const char *resp)
+{
+ DBusMessage *reply;
+ DBusConnection *conn = ofono_dbus_get_connection();
+
+ reply = dbus_message_new_method_return(euicc->pending);
+ if (reply == NULL)
+ return;
+
+ dbus_message_append_args(reply, DBUS_TYPE_STRING, &resp,
+ DBUS_TYPE_INVALID);
+
+ dbus_connection_flush(conn);
+
+ if (dbus_connection_send(conn, reply, NULL) == FALSE)
+ return;
+
+ dbus_message_unref(reply);
+ dbus_message_unref(euicc->pending);
+ euicc->pending = NULL;
+}
+
+static DBusMessage *euicc_get_properties(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+ DBusMessage *reply;
+ DBusMessageIter iter;
+ DBusMessageIter dict;
+ const char *eid = NULL;
+
+ reply = dbus_message_new_method_return(msg);
+ if (reply == NULL)
+ return NULL;
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ OFONO_PROPERTIES_ARRAY_SIGNATURE,
+ &dict);
+
+ eid = euicc->eid;
+ ofono_dbus_dict_append(&dict, "EID", DBUS_TYPE_STRING, &eid);
+
+ dbus_message_iter_close_container(&iter, &dict);
+
+ return reply;
+}
+
+static DBusMessage *euicc_transmit_pdu(DBusConnection *conn,
+ DBusMessage *msg, void *data);
+
+static const GDBusMethodTable euicc_methods[] = {
+ { GDBUS_ASYNC_METHOD("TransmitLpaApdu",
+ GDBUS_ARGS({ "length", "i" }, { "pdu", "s" }),
+ GDBUS_ARGS({ "pdu", "s" }),
+ euicc_transmit_pdu) },
+ { GDBUS_ASYNC_METHOD("GetProperties",
+ NULL, GDBUS_ARGS({ "properties", "a{sv}" }),
+ euicc_get_properties) },
+ { }
+};
+
+static const GDBusSignalTable euicc_signals[] = {
+ { GDBUS_SIGNAL("PropertyChanged",
+ GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+ { }
+};
+
+static void euicc_register(struct xmm7xxx_euicc *euicc)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = ofono_modem_get_path(euicc->modem);
+
+ DBG("");
+ if (!g_dbus_register_interface(conn, path, OFONO_EUICC_LPA_INTERFACE,
+ euicc_methods,
+ euicc_signals,
+ NULL, euicc, euicc_cleanup)) {
+ ofono_error("Could not register %s interface under %s",
+ OFONO_EUICC_LPA_INTERFACE, path);
+ return;
+ }
+
+ ofono_modem_add_interface(euicc->modem, OFONO_EUICC_LPA_INTERFACE);
+
+ euicc->is_registered = TRUE;
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_EUICC_LPA_INTERFACE, "EID",
+ DBUS_TYPE_STRING, &euicc->eid);
+}
+
+static void euicc_send_cmd_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct xmm7xxx_euicc *euicc = user_data;
+ GAtResultIter iter;
+ int length;
+ const char *resp;
+
+ DBG("ok %d", ok);
+
+ euicc_release_isdr(euicc);
+
+ if (!ok) {
+ g_free(euicc->command);
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ g_free(euicc);
+ }
+
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CGLA:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &length))
+ return;
+
+ if (!g_at_result_iter_next_string(&iter, &resp))
+ return;
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ euicc->eid = g_strdup(resp+10);
+
+ /* eid is present register interface*/
+ euicc_register(euicc);
+ }
+
+ if (euicc->pending)
+ euicc_pending_reply(euicc, resp);
+}
+
+static int euicc_send_cmd(struct xmm7xxx_euicc *euicc)
+{
+ char buff[100];
+
+ snprintf(buff, sizeof(buff), "AT+CGLA=%u,%u,\"%s\"",
+ euicc->channel, euicc->length, euicc->command);
+
+ if (g_at_chat_send(euicc->chat, buff, cgla_prefix,
+ euicc_send_cmd_cb, euicc, NULL))
+ return 0;
+
+ return -1;
+}
+
+static void euicc_select_isdr_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct xmm7xxx_euicc *euicc = user_data;
+ GAtResultIter iter;
+
+ DBG("ok %d", ok);
+
+ if (!ok) {
+ g_free (euicc->command);
+
+ if (!euicc->is_registered) {
+ g_free(euicc->eid);
+ g_free(euicc);
+ }
+
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CCHO:"))
+ return;
+
+ g_at_result_iter_next_number(&iter, &euicc->channel);
+
+ euicc_send_cmd(euicc);
+}
+
+static void euicc_select_isdr(struct xmm7xxx_euicc *euicc)
+{
+ char buff[50];
+
+ snprintf(buff, sizeof(buff), "AT+CCHO=\"%s\"", EUICC_ISDR_AID);
+
+ g_at_chat_send(euicc->chat, buff, ccho_prefix,
+ euicc_select_isdr_cb, euicc, NULL);
+}
+
+static DBusMessage *euicc_transmit_pdu(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct xmm7xxx_euicc *euicc = data;
+ DBusMessageIter iter;
+ DBusMessageIter var;
+ const char *command;
+
+ DBG("");
+ if (euicc->pending)
+ return __ofono_error_busy(msg);
+
+ if (!dbus_message_iter_init(msg, &iter))
+ return __ofono_error_invalid_args(msg);
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
+ return __ofono_error_invalid_args(msg);
+
+ dbus_message_iter_get_basic(&iter, &euicc->length);
+
+ dbus_message_iter_next(&iter);
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
+ return __ofono_error_invalid_args(msg);
+
+ dbus_message_iter_get_basic(&iter, &command);
+ g_free(euicc->command);
+ euicc->command = g_strdup(command);
+
+ euicc->pending = dbus_message_ref(msg);
+
+ euicc_select_isdr(euicc);
+
+ return NULL;
+}
+
+static void euicc_update_eid(struct xmm7xxx_euicc *euicc)
+{
+ g_free(euicc->command);
+ euicc->command = g_strdup(EUICC_EID_CMD);
+ euicc->length = sizeof(EUICC_EID_CMD) - 1;
+
+ euicc_select_isdr(euicc);
+}
+
+static void xmm_euicc_enable(struct ofono_modem *modem, void *data)
+{
+ struct xmm7xxx_euicc *euicc = g_new0(struct xmm7xxx_euicc, 1);
+
+ DBG("coex enable");
+
+ euicc->chat = data;
+ euicc->modem = modem;
+ euicc->eid = g_strdup("INVALID");
+ euicc->channel = -1;
+ euicc->command = NULL;
+ euicc->pending = NULL;
+ euicc->is_registered = FALSE;
+
+ euicc_update_eid(euicc);
+}
+
+static void xmm_euicc_disable(struct ofono_modem *modem)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = ofono_modem_get_path(modem);
+
+ if (g_dbus_unregister_interface(conn, path,
+ OFONO_EUICC_LPA_INTERFACE))
+ ofono_modem_remove_interface(modem,
+ OFONO_EUICC_LPA_INTERFACE);
+}
+/* eUICC Implementation Ends */
+
/* Coex Implementation */
enum wlan_bw {
WLAN_BW_UNSUPPORTED = -1,
@@ -1181,6 +1490,8 @@ static int xmm7xxx_disable(struct ofono_modem *modem)
data->netreg_watch = 0;
}
+ xmm_euicc_disable(modem);
+
return -EINPROGRESS;
}
@@ -1193,6 +1504,7 @@ static void xmm7xxx_pre_sim(struct ofono_modem *modem)
ofono_devinfo_create(modem, OFONO_VENDOR_IFX, "atmodem", data->chat);
data->sim = ofono_sim_create(modem, OFONO_VENDOR_XMM, "atmodem",
data->chat);
+ xmm_euicc_enable(modem, data->chat);
}
static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -1290,6 +1602,7 @@ static int xmm7xxx_probe(struct ofono_modem *modem)
DBG("%p", modem);
data = g_try_new0(struct xmm7xxx_data, 1);
+
if (data == NULL)
return -ENOMEM;
--
1.9.1
1 year, 3 months
Port ofono-phonesim to Qt5
by Jonah Brüchert
Dear ofono maintainers,
This is the minimal set of patches required to port ofono phonesim to Qt5,
based on previous work from openembedded (https://layers.openembedded.org/layerindex/recipe
The original patches from openembedded have been preserved in order to keep
authorship information.
In order to ease porting to the upcoming Qt6, I have prepared additional
refactoring patches, which port away from deprecated APIs and make use
of c++11 features like override to make finding porting issues less difficult.
I'll send those in a seperate email if there is interest.
Kind regards,
Jonah
1 year, 3 months