Ticket #44 (closed defect: fixed)
RetrievePhonebook returns an empty list
| Reported by: | charlie | Owned by: | mickey |
|---|---|---|---|
| Priority: | major | Milestone: | milestone3 |
| Component: | framework/ogsmd | Version: | |
| Keywords: | phonebook | Cc: |
Description
If I call RetrievePhonebook?() before doing a call, then it returns an empty list.
That is : with this sequence of operations :
SetAntennaPower? Register Initiate # Wait for CallStatus? outgoing Release # Wait for CallStatus? inactive RetrievePhonebook?
It works (I get the phone book)
But with this one :
SetAntennaPower? Register RetrievePhonebook?
I get en empty phone book Not sure if I forget to do something or if it is a bug, but in any case, I'll prefer RetrievePhonebook? raising an exception instead of returning an empty list.
Change History
comment:1 Changed 5 years ago by charlie
- Summary changed from RetrievePhonebook return an empty list to RetrievePhonebook returns an empty list
comment:2 Changed 5 years ago by charlie
Sorry I messed with the formating :
If I call RetrievePhonebook() before doing a call, then it returns an empty list. That is : with this sequence of operations : SetAntennaPower Register Initiate # Wait for CallStatus outgoing Release # Wait for CallStatus inactive RetrievePhonebook It works (I get the phone book) But with this one : SetAntennaPower Register RetrievePhonebook I get en empty phone book Not sure if I forget to do something or if it is a bug, but in any case, I'll prefer RetrievePhonebook raising an exception instead of returning an empty list.
comment:3 Changed 5 years ago by mickey
- Status changed from new to assigned
- Milestone set to milestone2
Ok, the dump you sent me indicated what was wrong. The Calypso apparantly caches the phonebook in internal RAM and sends you a status signal once it's ready. If you query the phonebook before it's ready you will get an empty response from the modem. Unfortunately we can not explicitly query the modem, whether its phonebook is ready though, so while a cold start should be ok (modem was turned off before frameworkd starts), we have warmstart problems (modem was already on before frameworkd starts). The plan to cope with all that is do the following things in the frameworkd:
- Listen for the phonebook-readyness from the modem, sending you the signal: 'org.freesmartphone.GSM.SIM.MessageBookReady?()'
- Keeping internal phonebook readyness state and sending you a 'org.freesmartphone.GSM.SIM.PhonebookNotReady?' exception, when you do a phonebook operation before the phonebook is ready.
- Listen for new clients appearing on the bus, sending them the internal state as signal.
- Think about an (internal) test-operation to be able to synthesize phonebook-readyness state to overcome the problem that we can't query the modem for that.
All this will take a bit though ;)
comment:4 Changed 5 years ago by daniel
charlie, can you try again with revision [0aa8bfc5317efa1b7e420262105c58401e2efee1]? That may have fixed something you ran into (But I'm not sure)
