2) in enable fnc the modem is powered but The sim is not
sometimes It hangs up...Do I have to to poll the sim status
ready , or the driver will do that by itself ?
oFono never polls for anything. It is the driver's
responsibility to do that in the best possible way for the
hardware. Also, powering on the modem is separate from the sim
being ready. The general flow is this:
-Wait for the modem to power on and use ofono_modem_set_powered
when that happens successfully / fails.
- Figure out if the SIM is inserted and signal using
ofono_sim_inserted_notify. Do this step only once the SIM is
ready to be queried for its PIN status and perform any I/O on
SIM files that are always accessible (e.g. ICCID)
Ok. If Sim not "ready" , sending a signal prematurely could stuck anyhow
the stack ? 'cause it should explain a lot of thing..
If you tell oFono core that the sim is inserted, the first thing it does
is read some sim files that are always available. e.g. ICCID, etc.
Then it proceeds to check the PIN. If the PIN query fails due to a sim
busy condition, then yes the init process will stall. This is
considered a bug in the driver.
3) could u explain me what should I really do in virtual fnc
/ post_online ? i tried to stub them but they have not never
oFono has 3 basic states:
- Radio Off, Sim On
- Radio On, Sim On
set_online turns radio on / off
post_online populates the atoms that are available in radio 'On'
This is what i thought but I do not understand why I don't see the trace
log I put inside them...usually are called before pre_sim fn? are
related to any signal i have to manage/post ?
enable -> pre_sim, sim_inserted -> post_sim, set_online -> post_online.
Generally you do not call set_online before hitting the post_sim state.
I've managing vendor URC for sim detection right now but i have
problems.For instance if I remove it when ofonod is ready the Hilonc
sends an URC to notify sim status changed but after that it reboots
itself(2 sec later)... what i did is to notify the stack that the SIM
has been removed and modem is powered off . I thought that after calling
set_powered fnc the stack should have called my driver virtual disable
function in order to properly close the MUX .. but it's not..
No, if you call ofono_modem_set_powered(modem, FALSE) it assumes that
the modem powered off due to an internally generated event (e.g. not
oFono's doing). The driver has to clean up properly in this case. The
driver disable() method is only called on oFono initiated power down
5) I created and started the MUX as the first thing in
enable fnc but is
that right ? sometimes seems that the modem hangs up if just
Put a delay but don't like it very much as a
solution...moreover when I
power up the modem all the URC have been lost 'cause the MUX
been created yet..
That is what we do for most devices with a MUX, put it into MUX
state right away after basic initialization. The devices we
have can be queried for their state in addition to URCs, so it
works out very well.
right now i've been using custom URC in the first power up phase to
understand modem status. I manually set them but theoretically I should
check the values saved on the modem every power cycle. What I was
thinking was to test every time the values saved and enabling them if
they were not .After that I should call an AT+cfun=1,1 in order to reset
the modem and force it to send me again the needed URCs . What do u think ?
I do not see anything wrong with that strategy. Just keep in mind that
querying things you will be resetting (potentially) anyway is likely a
waste of time. Only query things that are required for the
initialization procedure. For the rest, simply set the setting you want.