/*
* ESP8266 FreeRTOS Firmware
* Copyright (C) 2015 Michael Jacobsen
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* https://github.com/SuperHouse/esp-open-rtos
*
*/
#include "cplusplus/cplusplus.hpp"
#include "thread/task.hpp"
#include "thread/queue.hpp"
#include "espressif/esp_common.h"
/******************************************************************************************************************
* task_1_t
*
*/
class task_1_t: public esp_open_rtos::thread::task_t
{
public:
esp_open_rtos::thread::queue_t queue;
private:
void task()
{
printf("task_1_t::task(): start\n");
uint32_t count = 0;
while(true) {
sleep(1000);
queue.post(count);
count++;
}
}
};
/******************************************************************************************************************
* task_2_t
*
*/
class task_2_t: public esp_open_rtos::thread::task_t
{
public:
esp_open_rtos::thread::queue_t queue;
private:
void task()
{
printf("task_2_t::task(): start\n");
while(true) {
uint32_t count;
if(queue.receive(count, 1500) == 0) {
printf("task_2_t::task(): got %lu\n", count);
}
else {
printf("task_2_t::task(): no msg\n");
}
}
}
};
/******************************************************************************************************************
* globals
*
*/
task_1_t task_1;
task_2_t task_2;
esp_open_rtos::thread::queue_t MyQueue;
/**
*
*/
extern "C" void user_init(void)
{
sdk_uart_div_modify(0, UART_CLK_FREQ / 115200);
MyQueue.create(10);
task_1.queue = MyQueue;
task_2.queue = MyQueue;
task_1.task_create("tsk1");
task_2.task_create("tsk2");
}