[PATCH] Delay full modem initialization until SIM is unlocked
- From: "Pablo Martí" <pmarti warp es>
- To: networkmanager-list gnome org
- Subject: [PATCH] Delay full modem initialization until SIM is unlocked
- Date: Thu, 29 May 2008 19:25:30 +0200
(Oops I was subscribed with my gmail address...)
On Thu, May 29, 2008 at 2:38 PM, Dennis Noordsij
<dennis noordsij helsinki fi> wrote:
> Tambet Ingo schreef:
>>
>> abstract all the quirks (again, much like wpa_supplicant). Currently,
>> the only candidate for this is VMC, Pablo could give more information
>> on that.
>>
>>
>
> Thanks for your quick reply!
>
> The seperate helper program is actually a nice idea IMO, makes NM more
> about the logic
> of managing the devices, and lets the device complexities be handled by
> the external
> helper program. One can then really take advantage of device specific
> quirks and features,
> and more easily fix/improve things without possibly disrupting support
> for other devices.
>
> And one could more easily contribute without having to touch the NM
> core, and make
> everything language agnostic.
>
> What kind of dbus API would you propose ? What would be the workload in
> NM to
> adapt to use such a dbus interface ? Any additional thoughts/ideas you
> have about this ?
>
> It would perhaps be fastest to proceed like:
> - define an API which is perfect from NM's point of view
> - Make the GSM (and CDMA) devices seperate helpers (i.e. maintain
> current functionality)
> - A helper dispatch mechanism to use the correct helper based on the HAL
> data (with a fallback
> on the current code if nothing more specific is found)
>
> At this point people can experiment with custom helpers (possibly based
> on VMC) however they wish.
After developing VMC for Vodafone, we started an internal prototype to
DBusificate the core and integrate it with NM. Development got stalled
for a while but here we are :)
Small demo:
[huno satellite:~] $ dbus-send --type=method_call --print-reply
--dest=es.warp.VMC / es.warp.VMC.GetProtocolInstance
string:/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial
method return sender=:1.99 -> dest=:1.100 reply_serial=2
object path "/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial"
[huno satellite:~] $ dbus-send --type=method_call --print-reply
--dest=es.warp.VMC
/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial
es.warp.VMC.PIN.Send string:0000
method return sender=:1.99 -> dest=:1.103 reply_serial=2
string "OK"
[huno satellite:~] $ dbus-send --type=method_call --print-reply
--dest=es.warp.VMC
/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial
es.warp.VMC.Network.GetSignalLevel
method return sender=:1.99 -> dest=:1.105 reply_serial=2
int32 28
[huno satellite:~] $ dbus-send --type=method_call --print-reply
--dest=es.warp.VMC
/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial
org.freedesktop.DBus.Introspectable.Introspect > vmc-core.xml
Attached you can find the current API
>
> I'd like to try something like this for my device.
We've been working on this as an internal R&D project till the
possible future integration with NM, but we'd be certainly happy to
have you (and anyone else) tinkering. I'll prepare a trac for next
week, I'll keep you posted
>
> Any thoughts ?
>
> Dennis
>
--
Pablo Martí
http://www.linkedin.com/in/pmarti || http://www.warp.es
python -c "print '706d6172746940776172702e6573'.decode('hex')"
--
Pablo Martí
http://www.linkedin.com/in/pmarti || http://www.warp.es
python -c "print '706d6172746940776172702e6573'.decode('hex')"
"<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial">
<interface name="es.warp.VMC.Contacts">
<method name="Add">
<arg direction="in" type="s" name="name" />
<arg direction="in" type="s" name="number" />
<arg direction="out" type="q" />
</method>
<method name="Delete">
<arg direction="in" type="q" name="index" />
</method>
<method name="List">
<arg direction="out" type="a(qss)" />
</method>
<method name="Find">
<arg direction="in" type="s" name="pattern" />
<arg direction="out" type="a(qss)" />
</method>
<method name="GetByIndex">
<arg direction="in" type="q" name="index" />
<arg direction="out" type="(qss)" />
</method>
</interface>
<interface name="es.warp.VMC.Network">
<signal name="InvalidDNS">
<arg type="s" name="dns1" />
<arg type="s" name="dns2" />
</signal>
<method name="GetSignalLevel">
<arg direction="out" type="i" />
</method>
<signal name="Disconnected">
</signal>
<method name="GetInfo">
<arg direction="out" type="(ss)" />
</method>
<signal name="RSSIChanged">
<arg type="q" name="rssi" />
</signal>
<method name="RegisterWithNetID">
<arg direction="in" type="s" name="netid" />
</method>
<method name="GetRoamingIDs">
<arg direction="out" type="as" />
</method>
<signal name="Connected">
</signal>
<method name="SetRegistrationNotification">
<arg direction="in" type="b" name="active" />
</method>
<signal name="SpeedChanged">
<arg type="s" name="up" />
<arg type="s" name="down" />
</signal>
<method name="GetRegistrationStatus">
<arg direction="out" type="(qq)" />
</method>
<method name="SetInfoFormat">
<arg direction="in" type="q" name="mode" />
<arg direction="in" type="q" name="format" />
</method>
<method name="GetNames">
<arg direction="out" type="a(qssqq)" />
</method>
<signal name="CregReceived">
<arg type="q" name="status" />
</signal>
<signal name="CellTypeChanged">
<arg type="s" name="newcell" />
</signal>
</interface>
<interface name="es.warp.VMC.Card">
<method name="GetCharset">
<arg direction="out" type="s" />
</method>
<method name="SetCharset">
<arg direction="in" type="s" name="charset" />
</method>
<method name="SendATString">
<arg direction="in" type="s" name="at_str" />
<arg direction="out" type="s" />
</method>
<method name="GetIMEI">
<arg direction="out" type="s" />
</method>
<method name="GetManufacturerName">
<arg direction="out" type="s" />
</method>
<method name="GetPhonebookSize">
<arg direction="out" type="i" />
</method>
<method name="GetIMSI">
<arg direction="out" type="s" />
</method>
<method name="DisableEcho">
</method>
<method name="GetCardModel">
<arg direction="out" type="s" />
</method>
<method name="EnableEcho">
</method>
<method name="GetCardVersion">
<arg direction="out" type="s" />
</method>
<method name="GetAvailableCharsets">
<arg direction="out" type="as" />
</method>
<method name="ResetSettings">
</method>
<method name="ConfigureConnection">
<arg direction="in" type="a{ss}" name="opts" />
</method>
</interface>
<interface name="org.freedesktop.DBus.Introspectable">
<method name="Introspect">
<arg direction="out" type="s" />
</method>
</interface>
<interface name="es.warp.VMC.SMS">
<signal name="SMSReceived">
<arg type="q" name="index" />
<arg type="s" name="where" />
</signal>
<method name="SetFormat">
<arg direction="in" type="q" name="format" />
</method>
<method name="SetSMSC">
<arg direction="in" type="s" name="smsc" />
</method>
<method name="List">
<arg direction="out" type="a(qss)" />
</method>
<method name="GetSMSC">
<arg direction="out" type="s" />
</method>
<method name="Send">
<arg direction="in" type="s" name="number" />
<arg direction="in" type="s" name="text" />
</method>
<method name="GetByIndex">
<arg direction="in" type="q" name="index" />
<arg direction="out" type="(qss)" />
</method>
<method name="SetIndication">
<arg direction="in" type="q" name="mode" />
<arg direction="in" type="q" name="mt" />
<arg direction="in" type="q" name="bm" />
<arg direction="in" type="q" name="ds" />
<arg direction="in" type="q" name="bfr" />
</method>
<method name="GetFormat">
<arg direction="out" type="q" />
</method>
<method name="Delete">
<arg direction="in" type="q" name="index" />
</method>
</interface>
<interface name="es.warp.VMC.PIN">
<method name="SendPUK">
<arg direction="in" type="s" name="puk" />
<arg direction="in" type="s" name="pin" />
</method>
<method name="Enable">
<arg direction="in" type="s" name="pin" />
</method>
<method name="Send">
<arg direction="in" type="s" name="pin" />
<arg direction="out" type="s" />
</method>
<method name="Disable">
<arg direction="in" type="s" name="pin" />
</method>
<method name="Change">
<arg direction="in" type="s" name="oldpin" />
<arg direction="in" type="s" name="newpin" />
</method>
<method name="Check">
<arg direction="out" type="s" />
</method>
</interface>
</node>
"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]