You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
53 lines
1.5 KiB
/* fields.h */ |
|
|
|
#ifndef _FIELDS_H_ |
|
#define _FIELDS_H_ |
|
|
|
#include "common.h" |
|
#include "avr/pgmspace.h" |
|
|
|
#define DISPLAY_CHARS 21 |
|
|
|
extern uint8_t field_values[DISPLAY_CHARS]; |
|
|
|
typedef struct field { |
|
PGM_P const *display; |
|
uint8_t display_entries; |
|
uint8_t length; |
|
} field_t; |
|
|
|
//#define field(c) fields[((uint8_t)(c) & (uint8_t)15)-1] |
|
|
|
//#define field_length(c) (field(c).length) |
|
|
|
#define FIELD_SIGN_NEGATIVE 0 |
|
#define FIELD_SIGN_POSITIVE 1 |
|
|
|
uint8_t field_length(char c); |
|
bool field_is_text(char c); |
|
PGM_P field_text(char c, uint8_t n); |
|
uint8_t field_display_entries(char c); |
|
bool is_field(char c); |
|
bool is_editable(char c); |
|
PGM_P get_string(PGM_P const *addr); |
|
uint8_t find_field(uint8_t n); |
|
uint8_t find_field_length_by_place(uint8_t index); |
|
uint8_t find_field_length(uint8_t index); |
|
uint8_t find_field_number(uint8_t index); |
|
uint8_t find_editable_field(uint8_t index, bool left); |
|
void write_field_enum(uint8_t field, uint8_t val); |
|
uint8_t read_field_enum(uint8_t field); |
|
uint16_t read_field_uint16(uint8_t field); |
|
void write_field_uint16(uint8_t field, uint16_t val); |
|
|
|
#define read_field_uint8(x) read_field_uint16(x) |
|
#define write_field_uint8(x, y) write_field_uint16(x, y) |
|
|
|
void write_field_integer_part(uint8_t field, int32_t val); |
|
void write_field_fractional_part(uint8_t field, int32_t val); |
|
int32_t round_dp(int32_t n, uint8_t dp); |
|
uint32_t read_field_fracint(int8_t index, bool frac); |
|
void write_field_fracint(uint8_t index, bool sign, bool frac, int32_t val); |
|
void write_field_temperature(uint8_t index, bool frac, temp_t k_temp); |
|
|
|
#endif
|
|
|