Warning: Can't synchronize with repository "(default)" (No changeset 96d22ec3fa3ef6de3ea8dc0d7d398adc9aa071cf in the repository). Look in the Trac log for more information.

Ticket #44 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

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:

  1. Listen for the phonebook-readyness from the modem, sending you the signal: 'org.freesmartphone.GSM.SIM.MessageBookReady?()'
  2. 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.
  3. Listen for new clients appearing on the bus, sending them the internal state as signal.
  4. 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)

comment:5 Changed 5 years ago by mickey

  • Milestone changed from milestone2 to milestone3

comment:6 Changed 5 years ago by mickey

  • Status changed from assigned to closed
  • Resolution set to fixed

I can no longer reproduce this. Please reopen with detailed instructions (a programmatic test), if you can.

Note: See TracTickets for help on using tickets.