Microchip® Advanced Software Framework

demotasks.c File Reference

FreeRTOS demo task implementations.

Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.

#include <asf.h>
#include <conf_demo.h>
#include "demotasks.h"

Macros

Task configuration
#define UART_TASK_PRIORITY   (tskIDLE_PRIORITY + 3)
 
#define UART_TASK_DELAY   (10 / portTICK_RATE_MS)
 
#define MAIN_TASK_PRIORITY   (tskIDLE_PRIORITY + 2)
 
#define MAIN_TASK_DELAY   (100 / portTICK_RATE_MS)
 
#define GRAPH_TASK_PRIORITY   (tskIDLE_PRIORITY + 1)
 
#define GRAPH_TASK_DELAY   (50 / portTICK_RATE_MS)
 
#define TERMINAL_TASK_PRIORITY   (tskIDLE_PRIORITY + 1)
 
#define TERMINAL_TASK_DELAY   (1000 / portTICK_RATE_MS)
 
#define ABOUT_TASK_PRIORITY   (tskIDLE_PRIORITY + 1)
 
#define ABOUT_TASK_DELAY   (33 / portTICK_RATE_MS)
 

Functions

static void cdc_rx_handler (uint8_t instance)
 Interrupt handler for reception from EDBG Virtual COM Port. More...
 
void demotasks_init (void)
 Initialize tasks and resources for demo. More...
 
Tasks for demo
static void main_task (void *params)
 Main demo task. More...
 
static void graph_task (void *params)
 Graph task. More...
 
static void terminal_task (void *params)
 Terminal task. More...
 
static void about_task (void *params)
 About task. More...
 
static void uart_task (void *params)
 UART task. More...
 

Menu and display configuration

#define MENU_HEIGHT   8
 Height of menu bar. More...
 
#define MENU_ITEM_WIDTH   (((GFX_MONO_LCD_WIDTH - (MENU_NUM_ITEMS - 1))) / MENU_NUM_ITEMS)
 Width per menu item. More...
 
#define CANVAS_HEIGHT   ((GFX_MONO_LCD_HEIGHT / 2) - (MENU_HEIGHT + 1))
 Height of area in which to draw content. More...
 
#define CANVAS_WIDTH   (GFX_MONO_LCD_WIDTH)
 Width of area in which to draw content. More...
 
#define CANVAS_GRAPH_Y_OFFSET   (GFX_MONO_LCD_HEIGHT / 2)
 Offset of Y-coordinate for display buffer of graph. More...
 
#define TERMINAL_LINES   (1 + ((CANVAS_HEIGHT - SYSFONT_HEIGHT) / (SYSFONT_HEIGHT + 1)))
 Character lines on display. More...
 
#define TERMINAL_COLUMNS   (CANVAS_WIDTH / SYSFONT_WIDTH)
 Character columns on display. More...
 
#define TERMINAL_BUFFER_LINES   (1 + TERMINAL_LINES)
 Character lines in terminal buffer. More...
 
#define TERMINAL_BUFFER_COLUMNS   (1 + TERMINAL_COLUMNS)
 Character columns in terminal buffer. More...
 
enum  menu_items {
  MENU_ITEM_GRAPH,
  MENU_ITEM_TERMINAL,
  MENU_ITEM_ABOUT,
  MENU_NUM_ITEMS
}
 Available selections in menu. More...
 

Global constants and variables

static const char menu_items_text [MENU_NUM_ITEMS][6]
 Labels for menu items. More...
 
static const char about_text []
 Text to display on about screen. More...
 
static struct usart_module cdc_usart
 Instance for Embedded Debugger (EDBG) Virtual COM Port driver. More...
 
static uint8_t graph_noise = 128
 Pseudo-random noise for graph task. More...
 
static uint8_t terminal_buffer [TERMINAL_BUFFER_LINES][TERMINAL_BUFFER_COLUMNS]
 Buffer for terminal text. More...
 
static uint8_t terminal_line_offset
 Index of latest terminal line (first to be printed) More...
 
static xQueueHandle terminal_in_queue
 Queue for incoming terminal characters. More...
 
static xSemaphoreHandle display_mutex
 Semaphore to signal busy display. More...
 
static xSemaphoreHandle terminal_mutex
 Semaphore to signal busy terminal buffer. More...
 
static xTaskHandle terminal_task_handle
 Handle for terminal output task. More...
 
static xTaskHandle about_task_handle
 Handle for about screen task. More...
 
static OLED1_CREATE_INSTANCE (oled1, OLED1_EXT_HEADER)
 Instance for OLED1 Xplained Pro LED and button driver. More...