Compare commits

..

No commits in common. "634faad6508dd2bb828a37796abe9656a68a7154" and "bfaea9ef9ac2e5da0cd2320f730a3b57e917bfe1" have entirely different histories.

6 changed files with 36 additions and 54 deletions

View File

@ -221,7 +221,7 @@ boolean CFGFileParser::save(void *data)
//Let's write the settings
for(int i = 0; i < ref->count(); i++)
{
CFGParameterValue *cfgPV = ref->getAt(i);
CFGParameterValue *cfgPV = ref->get(i);
if(cfgPV->isQuotedParameter())
{

View File

@ -132,16 +132,16 @@ public:
return remove(indiceToStr);
}
boolean removeAt(unsigned int position)
boolean removeAt(unsigned int index)
{
unsigned int pos(0);
unsigned int position(0);
if(_head->_next == NULL) return false;
Dictionary *cursor = _head, *toDelete(NULL);
while(!isListEmpty(cursor->_next))
{
if(pos++ == position)
if(position++ == index)
{
toDelete = cursor->_next;
cursor->_next = cursor->_next->_next;
@ -176,32 +176,16 @@ public:
return get(parameter);
}
T* get(const unsigned int id)
T* get(const unsigned int index)
{
char indiceToStr[10];
sprintf(indiceToStr,"%d", id);
return get(indiceToStr);
}
T* operator()(const unsigned int id)
{
char indiceToStr[10];
sprintf(indiceToStr,"%d", id);
return get(indiceToStr);
}
T* getAt(const unsigned int position)
{
unsigned int pos(0);
unsigned int position(0);
if(isListEmpty(_head->_next))return NULL;
Dictionary *cursor = _head->_next;
while(!isListEmpty(cursor))
{
if(pos++ == position)
if(position++ == index)
return cursor->_value;
cursor = cursor->_next;
}
@ -209,6 +193,11 @@ public:
return NULL;
}
T* operator()(const unsigned int index)
{
return get(index);
}
unsigned int count()
{
unsigned int counter(0);

View File

@ -116,7 +116,7 @@ boolean TaskSchedulerManager::addTask(const char *name, TaskSchedulerManagerHelp
return result;
}
boolean TaskSchedulerManager::addTask(uint16_t id, TaskSchedulerManagerHelper::Schedule *schedule, boolean (*taskRoutine)(void*), void *pData)
boolean TaskSchedulerManager::addTask(uint8_t id, TaskSchedulerManagerHelper::Schedule *schedule, boolean (*taskRoutine)(void*), void *pData)
{
boolean result = _taskDataDictio.add(id, new TaskData({*schedule, taskRoutine, pData}));
delete schedule;
@ -128,7 +128,7 @@ boolean TaskSchedulerManager::removeTask(const char *name)
return _taskDataDictio.remove(name);
}
boolean TaskSchedulerManager::removeTask(uint16_t id)
boolean TaskSchedulerManager::removeTask(uint8_t id)
{
return _taskDataDictio.remove(id);
}
@ -138,7 +138,7 @@ boolean TaskSchedulerManager::enableTask(const char *name)
_taskDataDictio(name)->schedule.setEnabled(true);
}
boolean TaskSchedulerManager::enableTask(uint16_t id)
boolean TaskSchedulerManager::enableTask(uint8_t id)
{
char indiceToStr[10];
sprintf(indiceToStr,"%d", id);
@ -150,7 +150,7 @@ boolean TaskSchedulerManager::disableTask(const char *name)
_taskDataDictio(name)->schedule.setEnabled(false);
}
boolean TaskSchedulerManager::disableTask(uint16_t id)
boolean TaskSchedulerManager::disableTask(uint8_t id)
{
char indiceToStr[10];
sprintf(indiceToStr,"%d", id);
@ -168,7 +168,7 @@ void TaskSchedulerManager::runTaskScheduler()
if(_nextTaskIndexToBeRun >= _taskDataDictio.count())_nextTaskIndexToBeRun = 0;
TaskData *p = _taskDataDictio.getAt(_nextTaskIndexToBeRun);
TaskData *p = _taskDataDictio(_nextTaskIndexToBeRun);
if(p == NULL)//Shouldn't happen
return;
@ -206,24 +206,14 @@ void TaskSchedulerManager::runTaskScheduler()
}
if(p->schedule._triggerType != TaskSchedulerManagerHelper::Schedule::TRIGGER_ONCE_AND_DELETE)_nextTaskIndexToBeRun++;
else if(p->schedule._triggerType == TaskSchedulerManagerHelper::Schedule::TRIGGER_ONCE_AND_DELETE && !(p->schedule._triggered))_nextTaskIndexToBeRun++;
else if(p->schedule._triggerType == TaskSchedulerManagerHelper::Schedule::TRIGGER_ONCE_AND_DELETE && p->schedule._triggered) //If the task has to be deleted after executing and if it has been executed, we delete it
{
_taskDataDictio.removeAt(_nextTaskIndexToBeRun);
}
}
const unsigned int TaskSchedulerManager::taskCount()
{
return _taskDataDictio.count();
}
uint16_t TaskSchedulerManager::findFreeTaskId()
{
uint16_t idToTry(1);
while(_taskDataDictio(idToTry) != NULL)
{
idToTry++;
}
return idToTry;
}

View File

@ -61,17 +61,16 @@ class TaskSchedulerManager
_taskDataDictio.dispose();
}
boolean addTask(const char *name, TaskSchedulerManagerHelper::Schedule *schedule, boolean (*taskRoutine)(void*), void *pData = NULL);
boolean addTask(uint16_t id, TaskSchedulerManagerHelper::Schedule *schedule, boolean (*taskRoutine)(void*), void *pData = NULL);
boolean addTask(uint8_t id, TaskSchedulerManagerHelper::Schedule *schedule, boolean (*taskRoutine)(void*), void *pData = NULL);
boolean removeTask(const char *name);
boolean removeTask(uint16_t id);
boolean removeTask(uint8_t id);
boolean enableTask(const char *name);
boolean enableTask(uint16_t id);
boolean enableTask(uint8_t id);
boolean disableTask(const char *name);
boolean disableTask(uint16_t id);
boolean disableTask(uint8_t id);
boolean clearTask();
void runTaskScheduler();
const unsigned int taskCount();
uint16_t findFreeTaskId();
protected:
TaskSchedulerManager();
TaskSchedulerManager(RtcManager &rtcManager);
@ -83,7 +82,7 @@ class TaskSchedulerManager
void *pData;
};
uint16_t _nextTaskIndexToBeRun;
uint8_t _nextTaskIndexToBeRun;
RtcManager *_rtcManager;
Dictionary<TaskData> _taskDataDictio;
};

View File

@ -27,7 +27,6 @@ boolean task_batt_sensing(void *pData)
View1Packet *p = (View1Packet *) pData;
Serial.println(F("BATT SENSING..."));
p->powerInfo = p->sab->getPowerInfo();
return true;
}

View File

@ -80,12 +80,12 @@ boolean rtcSetTimeApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, vo
else
{
p->getRtcManager().setDateTime(DateTime(
atoi(dictio->getAt(2)->getString()),
atoi(dictio->getAt(1)->getString()),
atoi(dictio->getAt((unsigned int)0)->getString()),
atoi(dictio->getAt(3)->getString()),
atoi(dictio->getAt(4)->getString()),
atoi(dictio->getAt(5)->getString())
atoi(dictio->get(2)->getString()),
atoi(dictio->get(1)->getString()),
atoi(dictio->get((unsigned int)0)->getString()),
atoi(dictio->get(3)->getString()),
atoi(dictio->get(4)->getString()),
atoi(dictio->get(5)->getString())
));
DateTime d = p->getRtcManager().getDateTime();
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"date\" : \"%d/%d/%d\", \"time\" : \"%d:%d:%d\" }", d.day(), d.month(), d.year(), d.hour(), d.minute(), d.second());
@ -138,13 +138,18 @@ boolean espRestartApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, vo
SAB *sab = (SAB*)pData;
char buffer[200];
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"message\" : \"module %s in 10 seconds\" }",strstr(HRD.httpResource,"reset") == NULL ? "restarting" : "resetting");
sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"message\" : \"module restarting in 10 seconds\" }");
wc->print(buffer);
sab->getTaskSchedulerManager().addTask(sab->getTaskSchedulerManager().findFreeTaskId(), TaskSchedulerManagerHelper::Schedule::scheduleBuilder()
unsigned int id = sab->getTaskSchedulerManager().taskCount()+1;
sab->getTaskSchedulerManager().addTask(id, TaskSchedulerManagerHelper::Schedule::scheduleBuilder()
->setSeconds(10)
->setTriggerType(TaskSchedulerManagerHelper::Schedule::TRIGGER_ONCE_AND_DELETE)
->setTriggerRightAway(false), &(task_esp_reset_restart), NULL);
Serial.print(F("Task id : "));Serial.println(id);
return true;
}