i have a modem which i use for testing and i have done many read/write operation on its flash up to now.
And yesterday it started to give ERROR responses to my AT+WOPEN=3 commands. Although it says ERROR, it erases the flash. When i start the application again, i can see that the flash has been erased. I am sure about modem has some data on its flash and AT+WOPEN=0 successfull before i send AT+WOPEN=3. But it responses unexpectly as ERROR although it seems to be successfull.
i supplied at+CMEE=1 and i received +CME ERROR: 548.
i found on a documentation saying “No flash objects to delete”. But it has flash objects and has data on. this is strange i hope this wont be a worse problem later
so you mean that i think i create a flash object but i can not actually create? i m confused a little bit. first i create a flash object in a flash handle. then i write some data on it. i send at+wopen=0, then at+wopen=3 and it say “there are no flash object to delete so i couldnt delete anything”. and i suppose that the datas on the flash are still there but when i send at+wopen=1 i see they are not :S
Of course you do! Why would return values be provided if they were not to be used?!
Return values tell you stuff - ignore them at your peril!
This is basic programming stuff: always check all return values from all API calls - that applies to any API, not just ADL!
I mean if you don’t check the return values then you have no way of knowing whether or not the handle creation succeeded!
Currently, all the evidence points to the handle not having been created, doesn’t it?
So, unless you can provide some evidence that it has been created, the only conclusion that we can draw must be that the handle has not been created - mustn’t it?!
Obviously not - if the something doesn’t exist, how can you possibly use it?!
thats why i didnt check the return values bc i can read the data which i try to write. So if i can read, then no problems must have happened with writing.
Now i check the return values and all are returning success code.
firstly i subscribe the flash handle with the number of flash objects .
Then i write some data on the first object of this handle. That returns success too.
Then i read this object of the handle and i get the data i wrote there.
Everything seems to work well.
Then i send wopen=0. after that, i get ERROR when i send wopen=3. i start the application by wopen=1. i try to read the data which i wrote the handle but i can not read it anymore.
That shows wopen=3 was successful but it returns ERROR (CME 548).
i suspect of reaching maximum number of read/write count bc this is my test modem and its flash is tired of written and read many times, actually i dont know what causes flash to react like this.
Have u tried this with the latest SDK OASIS2.20 and Firmware R73 …??? i think there was a bug which was there in the previous firmware’s but i used the latest SDK & f/w and the CME 548 error did not occur…
we use open at 663g so havent tried on R73. I even dont know wheater i can use R73 on my module (fastrack supreme 20) or not. But there isnt a big problem. it doesnt worth to change the firmware version. If it is a bug then i can be relax for some, at least this is not happening bc of me.
I can confirm that the response to the AT+WOPEN=3 has changed. Prior to R73 the response to the command was OK if there were flash objects that were then erased. If the wireless CPU did not find any to erase, it would report +CME ERROR: 548.
That said, the end result is the same. Eventhough there ARE flash objects, and the AT command responds with +CME ERROR: 548, the device’s object are indeed erased.
This does however seem to be resovled in R73a. (See ANO51170 in the CRN for R73a)