API to Get RSSI Cellular Strength Took long time ~2+s

Hi, here is a Particle threads tutorial link

and here is part of My Boron code with threadFunction()


#include "Particle.h"


extern void startupFunction();
Thread *thread;
os_mutex_t mutex;

void startupFunction(){
  os_mutex_create(&mutex);
}

SYSTEM_THREAD(ENABLED);
STARTUP(startupFunction());


char bat_sig_data[256] = "{\"charg\":%f,\"bat\":%f,\"rat\":%d,\"strengthVal\":%f,\"qualityVal\":%f,\"qualityPercentage\":%f,\"strengthPercentage\":%.02f}";
unsigned long interval = 0;


void setup() {
  
  SYSTEM_MODE(AUTOMATIC);
  
  Serial.begin(); 
  
  
 
  os_mutex_lock(mutex);
  thread = new Thread("threadFunction", threadFunction);

  
  
}

void loop() {

     sone other stuff running in loop
     .................................
     .................................
     
     os_mutex_unlock(mutex);
     
   
    
   
 }


        



void threadFunction() { 
	while(true) {
	    os_mutex_lock(mutex);
            if (millis() - interval > 300000) {
              interval = millis();
             
              FuelGauge fuel;
              CellularSignal sig = Cellular.RSSI();
    
   

              int rat = sig.getAccessTechnology();
              float strengthVal = floorf(sig.getStrengthValue()*100)/100;
              float strengthPercentage = floorf(sig.getStrength()*100)/100;
              float qualityVal = floorf(sig.getQualityValue()*100)/100;
              float qualityPercentage = floorf(sig.getQuality()*100)/100;
              float bat = floorf(fuel.getVCell()*100)/100;
              float charg = floorf(fuel.getSoC()*100)/100;

              memset(bat_sig_data, 0, sizeof(bat_sig_data));    
              JSONBufferWriter writer(bat_sig_data, sizeof(bat_sig_data) - 1);
              writer.beginObject();
              writer.name("charg").value(charg);
              writer.name("bat").value(bat);
              writer.name("rat").value(rat);
              writer.name("strengthVal").value(strengthVal);
              writer.name("qualityVal").value(qualityVal);
              writer.name("qualityPercentage").value(qualityPercentage);
              writer.name("strengthPercentage").value(strengthPercentage);
              writer.endObject();
        
              Particle.publish("All_sign_data", bat_sig_data, 60, PRIVATE);


             }  
	    
	    
      }
 }
    

I’m not sure if is gonna work for Electron also I didn’t tested yet with my Boron, but will give you some idea how to deal with Threads.

Should Publish data from threadFunction() every 5 min