Reflow oven controller firmware
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

/* 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