RSSI() Taking Too Long


#1

Hello,

The project I am working on uses an Electron and a touch screen. At the moment, I am displaying the cellular signal strength on the screen with the use of the Cellular.RSSI() function. This is working fine, but the RSSI() function seems to take a long time to execute and is causing me to miss touch events on my screen.

I started timing the RSSI() function to see how long it took to execute and my results were all over the place. The function takes anywhere from 20 milliseconds to 3900 milliseconds, which is way too long. I have tried using System_Thread and Manual Mode, but nothing has resolved the problem. My assumption is the function is being held up when the cellular chip is busy with a separate task.

Does anyone know of a way to speed this up or maybe a way to check if the chip is busy so i can skip the RSSI function?

Thanks.


#2

I would try only calling Cellular.RSSI() when Cellular.ready() returns true. I don’t think it returns a meaningful value when you’re not connected to a tower anyway, and I think it will probably block for a much longer period of time when not connected or trying to connect, but I didn’t actually test that.


#3

Thanks for the response.

I am trying to show the signal strength on the screen at all times. If the Electron is not connected to the cloud (Particle.connected returns false), I don’t need to check the rssi value. The problem is when the Electron is connected to the cloud, so Cellular.ready() will return true.


#4

Weird. In that case, I’d make the AT+CSQ command directly with Cellular.command. You can set the timeout for that. That might work.

Here’s an example of making the call.


#5

I tried your last suggestion, with Cellular.command(), but that still seems to be taking a long time. Roughly 1500 milliseconds on average.