#include <Arduino.h>
#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu= 0;
#else
static const BaseType_t app_cpu=1;
#endif
TaskHandle_t * task_user=NULL;
TaskHandle_t * task_serial=NULL;
// char buff[255];
char *buff= NULL;
int buff_len=0;
void user_input(void *parameter){
while (1) {
buff_len = Serial.available();
buff = (char*)realloc(buff,buff_len * sizeof(char));
Serial.println(xPortGetFreeHeapSize());
for (int i=0; i<buff_len; i++){
buff[i]=Serial.read();
}
vTaskDelay(50/portTICK_PERIOD_MS);
}
}
void serial_output(void *parameter){
while (1) {
Serial.write(buff,buff_len);
if (buff_len!=0){
Serial.println(buff_len);
buff_len=0;
}
vTaskDelay(10/portTICK_PERIOD_MS);
}
}
void setup() {
Serial.begin(115200);
xTaskCreatePinnedToCore(user_input,"user_input", 1024, NULL, 1, task_user, app_cpu);
vTaskDelay(500/portTICK_PERIOD_MS);
xTaskCreatePinnedToCore(serial_output,"serial_output", 1024, NULL, 1, task_serial, app_cpu);
}
void loop() {
// put your main code here, to run repeatedly:
}