50 lines
896 B
C
50 lines
896 B
C
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* Copyright (c) Camden Dixie O'Brien
|
|
*/
|
|
|
|
#ifndef DISPLAY_DRIVER_H
|
|
#define DISPLAY_DRIVER_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
typedef enum {
|
|
DISPLAY_SEGMENT_A,
|
|
DISPLAY_SEGMENT_B,
|
|
DISPLAY_SEGMENT_C,
|
|
DISPLAY_SEGMENT_D,
|
|
DISPLAY_SEGMENT_E,
|
|
DISPLAY_SEGMENT_F,
|
|
DISPLAY_SEGMENT_G,
|
|
DISPLAY_SEGMENT_DP,
|
|
DISPLAY_SEGMENT_COUNT,
|
|
} DisplaySegment;
|
|
|
|
typedef enum {
|
|
DISPLAY_DIGIT_1,
|
|
DISPLAY_DIGIT_2,
|
|
DISPLAY_DIGIT_3,
|
|
DISPLAY_DIGIT_4,
|
|
DISPLAY_DIGIT_COUNT,
|
|
} DisplayDigit;
|
|
|
|
typedef bool DisplayDigitState[DISPLAY_SEGMENT_COUNT];
|
|
typedef DisplayDigitState DisplayState[DISPLAY_DIGIT_COUNT];
|
|
|
|
/**
|
|
* The current state of the display.
|
|
*/
|
|
extern DisplayState display_state;
|
|
|
|
/**
|
|
* Initialize the display driver.
|
|
*/
|
|
void display_driver_init();
|
|
|
|
/**
|
|
* Driver update task; should be ran regularly with a short period.
|
|
*/
|
|
void display_driver_task(void *arg);
|
|
|
|
#endif
|