Hi, I am currently using the above module (which is in a AirLINK FXT009). The device connects to the GPRS bearer and then creates a TCP server and listens for incoming connections. Once a connection is established, the mode create a tunnel between UART1 and the TCP socket.
I want to go into low power mode when the modem is just sitting and listening for a TCP connection (i.e. no connection in progress). The device should go back to normal power mode, when a GPRS/TCP activity happens (i.e. somebody tries to connect to us) or a 5minute timer elapses
(using adl_tmrSubscribeExt(ADL_TMR_CYCLIC_OPT_NONE, 10605, ADL_TMR_TYPE_100MS, LowPowerWatchDogTimer, NULL, TRUE)
I am struggling to achieve this. I want to use AT+W32K = 1,0 (i.e. ignore the DTR line). So I don’t want to have to use GPIO’s etc.
So I send the W32 command as above and get an OK response, but the device still sits at 19mA (at 12V). So it is not going into low power mode.
What do I need to do to get this to work? Keep in mind that I am running a debug mode and am therefor connected over the USB cable (UART 2 I think) and receiving traces (not debugging though).
What is and is not possible and what do I need to do to achieve this?
Any help would be much appreciated!
Thanks,
Karl
Ok, so I think I have got the beginnings of a working low power mode BUT…
FOllowing the previous steps in fact do enable low power mode. However having the USB cable plugged into my PC was causing it to draw the 20mA. If I remove the USB cable, the power consumption goes down to 2-5mA. Further removing the UART1 serial cable from the device is reducing it down a little more (not much). But I need this one connected, so 2-5mA it will have to be.
So my questions now pertain to the device coming out of that mode and how to manage this properly.
Connecting to the device via the TCP server port (I have a fixed public IP address SIM), causes it to power up again but were does execution continue?
So how should I go about managing normal program execution using low power mode. Should my main loop continue (triggered by a timer) but I should just slow it down? Or should I do something different.
If the timer times out, does it call the main_task again? i.e. do I need to manage this method being executed more than the once at start up?
Sorry for the muddles questions… that is because I am a bit muddled…
Thanks,
Karl
For those that are trying to work this out…
To enable low-power mode send AT+W32K = 1
If you use the DTR option then you obviously need to manage that, otherwise if DTR is disable in the above command, then no need for that.
Once in this mode the system will automically go into low power mode when the application is in Idle. i.e. you are waiting for something to happen, e.g. and event or a timer… if using timers, make sure you use the strict version of the timers, otherwise the time won’t wake the module for processing. So my previously question came from me no understanding that the module does not got to sleep, it is just in idle and thus it wakes up when an event happens e.g. GSM event, interrupt, timers etc.
I hope that helps anyone out there… I had fun getting this to work… But the best advise is to create a shell application and just try and get a certain feature to work. Then slowly start adding in other functionality until it stops working.
Thanks,
Karl