[PATCH] Delay full modem initialization until SIM is unlocked



(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]