-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathk3ngdisplay.h
executable file
·122 lines (99 loc) · 4.66 KB
/
k3ngdisplay.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef _K3NGDISPLAY_H
#define _K3NGDISPLAY_H
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include "rotator_hardware.h"
#ifdef HARDWARE_EA4TX_ARS_USB
#include "rotator_features_ea4tx_ars_usb.h"
#endif
#ifdef HARDWARE_WB6KCN
#include "rotator_features_wb6kcn.h"
#endif
#ifdef HARDWARE_M0UPU
#include "rotator_features_m0upu.h"
#endif
#ifdef HARDWARE_TEST
#include "rotator_features_test.h"
#endif
#if !defined(HARDWARE_CUSTOM)
#include "rotator_features.h"
#endif
#ifdef HARDWARE_EA4TX_ARS_USB
#include "rotator_pins_ea4tx_ars_usb.h"
#endif
#ifdef HARDWARE_M0UPU
#include "rotator_pins_m0upu.h"
#endif
#ifdef HARDWARE_WB6KCN
#include "rotator_pins_wb6kcn.h"
#endif
#ifdef HARDWARE_TEST
#include "rotator_pins_test.h"
#endif
#if !defined(HARDWARE_CUSTOM)
#include "rotator_pins.h"
#endif
#define K3NG_DISPLAY_LIBRARY_VERSION "1.0.2015092001"
#define MAX_SCREEN_BUFFER_COLUMNS 20
#define MAX_SCREEN_BUFFER_ROWS 4
#define ATTRIBUTE_BLINK B00000001
#define TEXT_BLINK_MS 500
#define WORK_STRING_SIZE 32
class K3NGdisplay {
public:
K3NGdisplay(int display_columns, int display_rows, int _update_time);
void initialize();
void service(uint8_t force_update_flag); // write pending changes to the screen periodically and blink text that has the blink attribute
void clear(); // clear the display immediately
void clear_pending_buffer();
void update(); // update pending changes to the screen
void print(char * print_string);
void print(char * print_string,int x,int y);
void print(char * print_string,int x,int y, uint8_t text_attribute);
void print_attribute(char * print_string, uint8_t text_attribute);
void print_attribute(char * print_string,int x,int y, uint8_t text_attribute);
void print_center(char * print_string,int y);
void print_center_padded(char * print_string,int y,int padding);
void print_center_fixed_field_size(char * print_string,int y,int field_size);
void print_center_entire_row(char * print_string,int y,uint8_t text_attribute);
void print_center(char * print_string,int y,uint8_t text_attribute);
void print_center_screen(char * print_string);
void print_center_screen(char * print_string,uint8_t text_attribute);
void print_center_screen(char * print_string,char * print_string2);
void print_center_screen(char * print_string,char * print_string2,char * print_string3);
void print_center_screen(char * print_string,char * print_string2,char * print_string3,char * print_string4);
void print_right(char * print_string,int y);
void print_right_padded(char * print_string,int y,int padding);
void print_right_fixed_field_size(char * print_string,int y,int field_size);
void print_left(char * print_string,int y);
void print_left_padded(char * print_string,int y,int padding);
void print_left_fixed_field_size(char * print_string,int y,int field_size);
void print_top_left(char * print_string);
void print_top_right(char * print_string);
void print_bottom_left(char * print_string);
void print_bottom_right(char * print_string);
/* print a timed message in the center of the screen; this can be multiline */
void print_center_timed_message(char * print_string,int ms_to_display);
void print_center_timed_message(char * print_string,int ms_to_display,uint8_t text_attribute); // TODO - add multiline timed attribute prints
void print_center_timed_message(char * print_string,char * print_string2,int ms_to_display);
void print_center_timed_message(char * print_string,char * print_string2,char * print_string3,int ms_to_display);
void print_center_timed_message(char * print_string,char * print_string2,char * print_string3,char * print_string4,int ms_to_display);
void redraw(); // redraw the entire screen
void row_scroll();
void println(char * print_string);
int length(char * print_string);
void clear_row(uint8_t row_number); // clear one entire row
private:
void save_current_screen_to_revert_screen_buffer(); // used by the timed message functionality to push the current screen to a buffer for saving
//void push_revert_screen_buffer_to_live_buffer(); // used by the timed message functionality to pull a saved screen and push to the live display
void push_revert_screen_buffer_to_pending_buffer();
void revert_back_screen(); // used by the timed message functionality to pull a saved screen and push to the live display
void prepare_for_timed_screen(int ms_to_display);
int Xposition(int screen_buffer_index);
int Yposition(int screen_buffer_index);
int buffer_index_position(int x,int y);
};
#endif //_K3NGDISPLAY_H