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.
54 lines
1.5 KiB
54 lines
1.5 KiB
9 years ago
|
/* 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
|