directly use SemaphoreHandle_t as pointer

This commit is contained in:
andreas 2024-11-24 16:16:35 +01:00
parent 54ccb5dcd2
commit bfa38fe2e4
4 changed files with 15 additions and 13 deletions

View File

@ -156,11 +156,11 @@ class ExampleWebData{
vSemaphoreDelete(lock);
}
void set(int v){
GWSYNCHRONIZED(&lock);
GWSYNCHRONIZED(lock);
data=v;
}
int get(){
GWSYNCHRONIZED(&lock);
GWSYNCHRONIZED(lock);
return data;
}
};

View File

@ -246,7 +246,7 @@ void GwTcpClient::resolveHost(String host)
{
LOG_DEBUG(GwLog::LOG,"start resolving %s",host.c_str());
{
GWSYNCHRONIZED(&locker);
GWSYNCHRONIZED(locker);
resolvedAddress.resolved = false;
}
state = C_RESOLVING;
@ -283,12 +283,12 @@ void GwTcpClient::resolveHost(String host)
void GwTcpClient::setResolved(IPAddress addr, bool valid){
LOG_DEBUG(GwLog::LOG,"setResolved %s, valid=%s",
addr.toString().c_str(),(valid?"true":"false"));
GWSYNCHRONIZED(&locker);
GWSYNCHRONIZED(locker);
resolvedAddress.address=addr;
resolvedAddress.resolved=valid;
state=C_RESOLVED;
}
GwTcpClient::ResolvedAddress GwTcpClient::getResolved(){
GWSYNCHRONIZED(&locker);
GWSYNCHRONIZED(locker);
return resolvedAddress;
}

View File

@ -38,13 +38,14 @@ class TaskInterfacesStorage;
class GwUserCode{
GwLog *logger;
GwApiInternal *api;
SemaphoreHandle_t *mainLock;
SemaphoreHandle_t mainLock=nullptr;
TaskInterfacesStorage *taskData;
void startAddOnTask(GwApiInternal *api,GwUserTask *task,int sourceId,String name);
public:
~GwUserCode();
typedef std::map<String,String> Capabilities;
GwUserCode(GwApiInternal *api, SemaphoreHandle_t *mainLock);
GwUserCode(GwApiInternal *api);
void begin(SemaphoreHandle_t mainLock){this->mainLock=mainLock;}
void startUserTasks(int baseId);
void startInitTasks(int baseId);
void startAddonTask(String name,TaskFunction_t task, int id);

View File

@ -235,17 +235,17 @@ void SendNMEA0183Message(const tNMEA0183Msg &NMEA0183Msg, int sourceId,bool conv
class CalibrationValues {
using Map=std::map<String,double>;
Map values;
SemaphoreHandle_t lock;
SemaphoreHandle_t lock=nullptr;
public:
CalibrationValues(){
lock=xSemaphoreCreateMutex();
}
void set(const String &name,double value){
GWSYNCHRONIZED(&lock);
GWSYNCHRONIZED(lock);
values[name]=value;
}
bool get(const String &name, double &value){
GWSYNCHRONIZED(&lock);
GWSYNCHRONIZED(lock);
auto it=values.find(name);
if (it==values.end()) return false;
value=it->second;
@ -373,7 +373,7 @@ bool delayedRestart(){
},"reset",2000,&logger,0,NULL) == pdPASS;
}
ApiImpl *apiImpl=new ApiImpl(MIN_USER_TASK);
GwUserCode userCodeHandler(apiImpl,&mainLock);
GwUserCode userCodeHandler(apiImpl);
#define JSON_OK "{\"status\":\"OK\"}"
#define JSON_INVALID_PASS F("{\"status\":\"invalid password\"}")
@ -788,6 +788,7 @@ void setup() {
logger.setWriter(new DefaultLogWriter());
#endif
boatData.begin();
userCodeHandler.begin(mainLock);
userCodeHandler.startInitTasks(MIN_USER_TASK);
channels.preinit();
config.stopChanges();
@ -937,7 +938,7 @@ void setup() {
logger.logDebug(GwLog::LOG,"starting addon tasks");
logger.flush();
{
GWSYNCHRONIZED(&mainLock);
GWSYNCHRONIZED(mainLock);
userCodeHandler.startUserTasks(MIN_USER_TASK);
}
timers.addAction(HEAP_REPORT_TIME,[](){
@ -967,7 +968,7 @@ void handleSendAndRead(bool handleRead){
void loopRun() {
//logger.logDebug(GwLog::DEBUG,"main loop start");
monitor.reset();
GWSYNCHRONIZED(&mainLock);
GWSYNCHRONIZED(mainLock);
logger.flush();
monitor.setTime(1);
gwWifi.loop();