blob: dcfdf095d010c62d753bee064865cfca7c51b56f [file] [log] [blame]
#ifndef DISPLAY_7SEG_HEADER
#define DISPLAY_7SEG_HEADER
/*
* Copyright (c) 2021 Titouan Christophe
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdbool.h>
#include <stdint.h>
/*
* 3
* ---
* 1| |5
* -2-
* 0| |6
* ---
* 4
*/
#define CHAR_OFF (0)
#define CHAR_0 (BIT(0) | BIT(1) | BIT(3) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_1 (BIT(5) | BIT(6))
#define CHAR_2 (BIT(0) | BIT(2) | BIT(3) | BIT(4) | BIT(5))
#define CHAR_3 (BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_4 (BIT(1) | BIT(2) | BIT(5) | BIT(6))
#define CHAR_5 (BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(6))
#define CHAR_6 (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(6))
#define CHAR_7 (BIT(3) | BIT(5) | BIT(6))
#define CHAR_8 (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_9 (BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_A (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(5) | BIT(6))
#define CHAR_C (BIT(0) | BIT(1) | BIT(3) | BIT(4))
#define CHAR_E (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4))
#define CHAR_F (BIT(0) | BIT(1) | BIT(2) | BIT(3))
#define CHAR_H (BIT(0) | BIT(1) | BIT(2) | BIT(5) | BIT(6))
#define CHAR_L (BIT(0) | BIT(1) | BIT(4))
#define CHAR_P (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(5))
#define CHAR_U (BIT(0) | BIT(1) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_b (BIT(0) | BIT(1) | BIT(2) | BIT(4) | BIT(6))
#define CHAR_d (BIT(0) | BIT(2) | BIT(4) | BIT(5) | BIT(6))
#define CHAR_h (BIT(0) | BIT(1) | BIT(2) | BIT(6))
#define CHAR_i (BIT(6))
#define CHAR_o (BIT(0) | BIT(2) | BIT(4) | BIT(6))
#define CHAR_r (BIT(0) | BIT(2))
#define CHAR_t (BIT(0) | BIT(1) | BIT(2) | BIT(4))
#define CHAR_u (BIT(0) | BIT(4) | BIT(6))
#define CHAR_DASH (BIT(2))
#define CHAR_OVERLINE (BIT(3))
#define CHAR_UNDERSCORE (BIT(4))
#define CHAR_PIPE (BIT(0) | BIT(1))
extern const uint8_t DISPLAY_OFF[4];
extern const uint8_t TEXT_Err[4];
/**
* @brief Display characters on the 4x7seg display
* @param[in] chars The characters to be displayed
* @return 0 on success, nonzero on error
*/
int display_chars(const uint8_t chars[4]);
/**
* @brief Display a number on the 4x7seg display
* @param[in] num The number to be displayed
* @param[in] base The base into which the number shall be displayed
* @return 0 on success, nonzero on error
*/
int display_number(int num, unsigned int base);
#endif