epaper test with encoder

Dependencies:   mRotaryEncoder epd1in54

Committer:
RogerJKelly
Date:
Tue Mar 05 21:45:12 2019 +0000
Revision:
0:86a20b448fa5
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RogerJKelly 0:86a20b448fa5 1 #include "mbed.h"
RogerJKelly 0:86a20b448fa5 2 #include "epd1in54.h"
RogerJKelly 0:86a20b448fa5 3 #include "imagedata.h"
RogerJKelly 0:86a20b448fa5 4
RogerJKelly 0:86a20b448fa5 5 #include "mRotaryEncoder.h"
RogerJKelly 0:86a20b448fa5 6
RogerJKelly 0:86a20b448fa5 7 #include "menu.h"
RogerJKelly 0:86a20b448fa5 8
RogerJKelly 0:86a20b448fa5 9 #define HEATER_OFF 0
RogerJKelly 0:86a20b448fa5 10 #define HEATER_ON 1
RogerJKelly 0:86a20b448fa5 11
RogerJKelly 0:86a20b448fa5 12 //#include "m41t62_rtc.h"
RogerJKelly 0:86a20b448fa5 13 // Control
RogerJKelly 0:86a20b448fa5 14 //PinName rst;
RogerJKelly 0:86a20b448fa5 15 //PinName dc;
RogerJKelly 0:86a20b448fa5 16 //PinName busy;
RogerJKelly 0:86a20b448fa5 17 // SPI communication
RogerJKelly 0:86a20b448fa5 18 //PinName mosi;
RogerJKelly 0:86a20b448fa5 19 //PinName miso;
RogerJKelly 0:86a20b448fa5 20 //PinName sclk;
RogerJKelly 0:86a20b448fa5 21 //PinName cs;
RogerJKelly 0:86a20b448fa5 22
RogerJKelly 0:86a20b448fa5 23 PinName mosi = PA_12; //D2 p5;
RogerJKelly 0:86a20b448fa5 24 PinName miso = PA_11; //D10 p6;
RogerJKelly 0:86a20b448fa5 25 PinName sclk = PA_1; //A0 p7;
RogerJKelly 0:86a20b448fa5 26 PinName cs = PB_0; //D3 p8;
RogerJKelly 0:86a20b448fa5 27 PinName rst = PB_7; //D4 p9;
RogerJKelly 0:86a20b448fa5 28 PinName dc = PB_6; //D5 p10;
RogerJKelly 0:86a20b448fa5 29 PinName busy = PB_1; //D6 p11;
RogerJKelly 0:86a20b448fa5 30
RogerJKelly 0:86a20b448fa5 31 Epd epd = Epd(mosi, miso, sclk, cs, dc, rst, busy);
RogerJKelly 0:86a20b448fa5 32
RogerJKelly 0:86a20b448fa5 33 //RPG rpg1(PA_3,PA_4,PA_7); //Set up RPG
RogerJKelly 0:86a20b448fa5 34 mRotaryEncoder enc(PA_3,PA_4,PA_7,PullUp);
RogerJKelly 0:86a20b448fa5 35
RogerJKelly 0:86a20b448fa5 36 DigitalOut myled(LED1);
RogerJKelly 0:86a20b448fa5 37
RogerJKelly 0:86a20b448fa5 38 //DigitalIn B_UP(PB_13);
RogerJKelly 0:86a20b448fa5 39 //DigitalIn B_OK(PB_14);
RogerJKelly 0:86a20b448fa5 40 //DigitalIn B_DOWN(PB_15);
RogerJKelly 0:86a20b448fa5 41 //DigitalIn B_ENTER(PA_7, PullUp);
RogerJKelly 0:86a20b448fa5 42
RogerJKelly 0:86a20b448fa5 43 struct sDays menu_days[7];
RogerJKelly 0:86a20b448fa5 44
RogerJKelly 0:86a20b448fa5 45
RogerJKelly 0:86a20b448fa5 46 unsigned char frame_black[EPD_HEIGHT*EPD_WIDTH/8];
RogerJKelly 0:86a20b448fa5 47
RogerJKelly 0:86a20b448fa5 48 int menu_ptr=0; // which component are we changing?
RogerJKelly 0:86a20b448fa5 49 int menu_sel=0; // which component are we changing?
RogerJKelly 0:86a20b448fa5 50
RogerJKelly 0:86a20b448fa5 51 // Library calls here when you go clockwise
RogerJKelly 0:86a20b448fa5 52 void cw()
RogerJKelly 0:86a20b448fa5 53 {
RogerJKelly 0:86a20b448fa5 54 // modify the menu pointer
RogerJKelly 0:86a20b448fa5 55 menu_ptr += 1;
RogerJKelly 0:86a20b448fa5 56 if ( menu_ptr > MENU_MAX ) menu_ptr = MENU_MIN;
RogerJKelly 0:86a20b448fa5 57 //setleds();
RogerJKelly 0:86a20b448fa5 58 }
RogerJKelly 0:86a20b448fa5 59
RogerJKelly 0:86a20b448fa5 60 // Library calls here when you go anticlockwise
RogerJKelly 0:86a20b448fa5 61 void ccw()
RogerJKelly 0:86a20b448fa5 62 {
RogerJKelly 0:86a20b448fa5 63 // modify the menu pointer
RogerJKelly 0:86a20b448fa5 64 menu_ptr -= 1;
RogerJKelly 0:86a20b448fa5 65 if ( menu_ptr < MENU_MIN ) menu_ptr = MENU_MAX;
RogerJKelly 0:86a20b448fa5 66 //setleds();
RogerJKelly 0:86a20b448fa5 67 }
RogerJKelly 0:86a20b448fa5 68
RogerJKelly 0:86a20b448fa5 69 // Library calls here when you push in on the encoder shaft
RogerJKelly 0:86a20b448fa5 70 void btn()
RogerJKelly 0:86a20b448fa5 71 {
RogerJKelly 0:86a20b448fa5 72 // change selected component (0, 1, 2)
RogerJKelly 0:86a20b448fa5 73 //if (++sel>2) sel=0;
RogerJKelly 0:86a20b448fa5 74 menu_sel = true;
RogerJKelly 0:86a20b448fa5 75 }
RogerJKelly 0:86a20b448fa5 76
RogerJKelly 0:86a20b448fa5 77
RogerJKelly 0:86a20b448fa5 78
RogerJKelly 0:86a20b448fa5 79 void draw_window( char *buf, int x, int y, int width, int height, int rot, int colored );
RogerJKelly 0:86a20b448fa5 80 //void draw_menu_window( int mptr, int start, int colored );
RogerJKelly 0:86a20b448fa5 81 void draw_menu_window( int mptr, int start, int runtime, enum cal_selected, int colored );
RogerJKelly 0:86a20b448fa5 82
RogerJKelly 0:86a20b448fa5 83 int main()
RogerJKelly 0:86a20b448fa5 84 {
RogerJKelly 0:86a20b448fa5 85 /*********************
RogerJKelly 0:86a20b448fa5 86 mosi = PA_12; //D2 p5;
RogerJKelly 0:86a20b448fa5 87 miso = PA_11; //D10 p6;
RogerJKelly 0:86a20b448fa5 88 sclk = PA_1; //A0 p7;
RogerJKelly 0:86a20b448fa5 89 cs = PB_0; //D3 p8;
RogerJKelly 0:86a20b448fa5 90 rst = PB_7; //D4 p9;
RogerJKelly 0:86a20b448fa5 91 dc = PB_6; //D5 p10;
RogerJKelly 0:86a20b448fa5 92 busy = PB_1; //D6 p11;
RogerJKelly 0:86a20b448fa5 93 ***********************/
RogerJKelly 0:86a20b448fa5 94
RogerJKelly 0:86a20b448fa5 95 // Set up encoder callbacks
RogerJKelly 0:86a20b448fa5 96 enc.attachROTCW(cw);
RogerJKelly 0:86a20b448fa5 97 enc.attachROTCCW(ccw);
RogerJKelly 0:86a20b448fa5 98 enc.attachSW(btn);
RogerJKelly 0:86a20b448fa5 99
RogerJKelly 0:86a20b448fa5 100 int heater_status = HEATER_OFF;
RogerJKelly 0:86a20b448fa5 101 int x_ptr = MENU_MIN;
RogerJKelly 0:86a20b448fa5 102
RogerJKelly 0:86a20b448fa5 103 memset(frame_black, 0xFF, sizeof(unsigned char)*EPD_HEIGHT*EPD_WIDTH/8);
RogerJKelly 0:86a20b448fa5 104
RogerJKelly 0:86a20b448fa5 105 //Epd epd = Epd(mosi, miso, sclk, cs, dc, rst, busy);
RogerJKelly 0:86a20b448fa5 106 if (epd.Init(lut_full_update) != 0){
RogerJKelly 0:86a20b448fa5 107 return -1;
RogerJKelly 0:86a20b448fa5 108 }
RogerJKelly 0:86a20b448fa5 109
RogerJKelly 0:86a20b448fa5 110 // clear the frame to white
RogerJKelly 0:86a20b448fa5 111 epd.SetFrameMemory(frame_black, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 112 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 113 epd.SetFrameMemory(frame_black, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 114 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 115
RogerJKelly 0:86a20b448fa5 116
RogerJKelly 0:86a20b448fa5 117
RogerJKelly 0:86a20b448fa5 118 /* Display the frame_buffer */
RogerJKelly 0:86a20b448fa5 119 //epd.SetFrameMemory(frame_black, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 120 //epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 121
RogerJKelly 0:86a20b448fa5 122 wait(2.0);
RogerJKelly 0:86a20b448fa5 123
RogerJKelly 0:86a20b448fa5 124 if (epd.Init(lut_partial_update) != 0)
RogerJKelly 0:86a20b448fa5 125 {
RogerJKelly 0:86a20b448fa5 126 //Serial.print("e-Paper init failed");
RogerJKelly 0:86a20b448fa5 127 return -1;
RogerJKelly 0:86a20b448fa5 128 }
RogerJKelly 0:86a20b448fa5 129
RogerJKelly 0:86a20b448fa5 130 //epd.Sleep();
RogerJKelly 0:86a20b448fa5 131
RogerJKelly 0:86a20b448fa5 132 // load frame onto both pages of display memory
RogerJKelly 0:86a20b448fa5 133 //epd.SetFrameMemory(IMAGE_DATA, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 134 //epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 135 //epd.SetFrameMemory(IMAGE_DATA, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 136 //epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 137
RogerJKelly 0:86a20b448fa5 138 // load rom RHC1 frame onto both pages of display memory
RogerJKelly 0:86a20b448fa5 139 epd.SetFrameMemory(IMAGE_RHC4, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 140 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 141 epd.SetFrameMemory(IMAGE_RHC4, 0, 0, epd.width, epd.height);
RogerJKelly 0:86a20b448fa5 142 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 143
RogerJKelly 0:86a20b448fa5 144 for ( x_ptr = MENU_MIN; x_ptr <= MENU_MAX; x_ptr++ )
RogerJKelly 0:86a20b448fa5 145 {
RogerJKelly 0:86a20b448fa5 146 if ( x_ptr == 0 || x_ptr == 6 )
RogerJKelly 0:86a20b448fa5 147 menu_days[x_ptr].start_hour = START_HOUR_OFF;
RogerJKelly 0:86a20b448fa5 148 else
RogerJKelly 0:86a20b448fa5 149 menu_days[x_ptr].start_hour = START_HOUR_DEFAULT;
RogerJKelly 0:86a20b448fa5 150
RogerJKelly 0:86a20b448fa5 151 menu_days[x_ptr].runtime = RUN_TIME_DEFAULT;
RogerJKelly 0:86a20b448fa5 152 menu_days[x_ptr].selected = NotSel;
RogerJKelly 0:86a20b448fa5 153 draw_menu_window( x_ptr, menu_days[x_ptr].start_hour, menu_days[x_ptr].runtime, menu_days[x_ptr].selected, COLORED );
RogerJKelly 0:86a20b448fa5 154 }
RogerJKelly 0:86a20b448fa5 155 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 156
RogerJKelly 0:86a20b448fa5 157 //epd.Sleep();
RogerJKelly 0:86a20b448fa5 158
RogerJKelly 0:86a20b448fa5 159 //memset(frame_black, 0xEE, sizeof(unsigned char)*EPD_HEIGHT*EPD_WIDTH/8);
RogerJKelly 0:86a20b448fa5 160
RogerJKelly 0:86a20b448fa5 161 char txtbuf[16];
RogerJKelly 0:86a20b448fa5 162 bool button_pressed = false;
RogerJKelly 0:86a20b448fa5 163
RogerJKelly 0:86a20b448fa5 164 set_time(1494267665); // Set RTC time to 8 May 2017 18:21:05 UTC
RogerJKelly 0:86a20b448fa5 165
RogerJKelly 0:86a20b448fa5 166 int selected = 0;
RogerJKelly 0:86a20b448fa5 167
RogerJKelly 0:86a20b448fa5 168 while(1)
RogerJKelly 0:86a20b448fa5 169 {
RogerJKelly 0:86a20b448fa5 170 myled = 1;
RogerJKelly 0:86a20b448fa5 171 wait(0.1);
RogerJKelly 0:86a20b448fa5 172 myled = 0;
RogerJKelly 0:86a20b448fa5 173 //wait(0.5);
RogerJKelly 0:86a20b448fa5 174 //------try to update a time stamp window-------
RogerJKelly 0:86a20b448fa5 175 time_t seconds = time(NULL);
RogerJKelly 0:86a20b448fa5 176 char buffer[16];
RogerJKelly 0:86a20b448fa5 177 //strftime(buffer, 16, "%I:%M:%S", localtime(&seconds));
RogerJKelly 0:86a20b448fa5 178 strftime(buffer, 16, "%I:%M:%S", localtime(&seconds));
RogerJKelly 0:86a20b448fa5 179
RogerJKelly 0:86a20b448fa5 180 //dirt = rpg1.dir(); //Get Dir
RogerJKelly 0:86a20b448fa5 181 //pulses = pulses + dirt; //Add Dir to count
RogerJKelly 0:86a20b448fa5 182 //if (rpg1.pb())
RogerJKelly 0:86a20b448fa5 183 //{
RogerJKelly 0:86a20b448fa5 184 // pulses = 5555; //Reset count if PB pressed
RogerJKelly 0:86a20b448fa5 185 //}
RogerJKelly 0:86a20b448fa5 186 //printf("count: %i \r", pulses); //Print out Count
RogerJKelly 0:86a20b448fa5 187 //sprintf(buffer,"%i",pulses);
RogerJKelly 0:86a20b448fa5 188 //draw_window( buffer, 80, 72, 32, 126, ROTATE_270, COLORED );
RogerJKelly 0:86a20b448fa5 189
RogerJKelly 0:86a20b448fa5 190 // draw heater status --- now in image
RogerJKelly 0:86a20b448fa5 191 //sprintf( txtbuf, "%s", "Status" );
RogerJKelly 0:86a20b448fa5 192 //draw_window( txtbuf, 70, 90, 32, 108, ROTATE_270, COLORED );
RogerJKelly 0:86a20b448fa5 193 for ( x_ptr = MENU_MIN; x_ptr <= MENU_MAX; x_ptr++ )
RogerJKelly 0:86a20b448fa5 194 {
RogerJKelly 0:86a20b448fa5 195 //if ( menu_ptr == selected )
RogerJKelly 0:86a20b448fa5 196 // draw_menu_window( menu_ptr, menu_days[menu_ptr].start_hour, menu_days[menu_ptr].runtime, menu_days[menu_ptr].selected, UNCOLORED );
RogerJKelly 0:86a20b448fa5 197 //else
RogerJKelly 0:86a20b448fa5 198 //draw_menu_window( menu_ptr, menu_days[menu_ptr].start_hour, menu_days[menu_ptr].runtime, menu_days[menu_ptr].selected, COLORED );
RogerJKelly 0:86a20b448fa5 199 draw_menu_window( x_ptr, menu_days[x_ptr].start_hour, menu_days[x_ptr].runtime, menu_days[x_ptr].selected, COLORED );
RogerJKelly 0:86a20b448fa5 200 }
RogerJKelly 0:86a20b448fa5 201 // cycle through the menus
RogerJKelly 0:86a20b448fa5 202 if ( menu_ptr != selected )
RogerJKelly 0:86a20b448fa5 203 {
RogerJKelly 0:86a20b448fa5 204 menu_days[selected].selected = NotSel;
RogerJKelly 0:86a20b448fa5 205 //selected++;
RogerJKelly 0:86a20b448fa5 206 //if ( selected > MENU_MAX ) selected = MENU_MIN;
RogerJKelly 0:86a20b448fa5 207 selected = menu_ptr;
RogerJKelly 0:86a20b448fa5 208 menu_days[selected].selected = DoW;
RogerJKelly 0:86a20b448fa5 209 }
RogerJKelly 0:86a20b448fa5 210
RogerJKelly 0:86a20b448fa5 211 if( menu_sel == true ) //&& button_pressed == false) //B_ENTER == 0 )
RogerJKelly 0:86a20b448fa5 212 {
RogerJKelly 0:86a20b448fa5 213 if ( button_pressed == false )
RogerJKelly 0:86a20b448fa5 214 {
RogerJKelly 0:86a20b448fa5 215 if ( heater_status == HEATER_OFF ) heater_status = HEATER_ON;
RogerJKelly 0:86a20b448fa5 216 else heater_status = HEATER_OFF;
RogerJKelly 0:86a20b448fa5 217 button_pressed = true;
RogerJKelly 0:86a20b448fa5 218 set_time(0);
RogerJKelly 0:86a20b448fa5 219 time_t seconds = time(NULL);
RogerJKelly 0:86a20b448fa5 220 strftime(buffer, 16, "%I:%M:%S", localtime(&seconds));
RogerJKelly 0:86a20b448fa5 221 }
RogerJKelly 0:86a20b448fa5 222 if ( heater_status == HEATER_ON )
RogerJKelly 0:86a20b448fa5 223 {
RogerJKelly 0:86a20b448fa5 224 sprintf( txtbuf, "%s", " ON " );
RogerJKelly 0:86a20b448fa5 225 }
RogerJKelly 0:86a20b448fa5 226 else
RogerJKelly 0:86a20b448fa5 227 {
RogerJKelly 0:86a20b448fa5 228 sprintf( txtbuf, "%s", " OFF" );
RogerJKelly 0:86a20b448fa5 229 sprintf( buffer, "%s", "--:--:--");
RogerJKelly 0:86a20b448fa5 230 }
RogerJKelly 0:86a20b448fa5 231
RogerJKelly 0:86a20b448fa5 232 draw_window( txtbuf, 10, 10, 32, 80, ROTATE_270, UNCOLORED ); // status On Off, was at x=70
RogerJKelly 0:86a20b448fa5 233 //draw_window( buffer, 160, 22, 32, 146, ROTATE_270, UNCOLORED ); // clock window
RogerJKelly 0:86a20b448fa5 234 }
RogerJKelly 0:86a20b448fa5 235 else
RogerJKelly 0:86a20b448fa5 236 {
RogerJKelly 0:86a20b448fa5 237 if ( heater_status == HEATER_OFF )
RogerJKelly 0:86a20b448fa5 238 {
RogerJKelly 0:86a20b448fa5 239 sprintf( txtbuf, "%s", " OFF" );
RogerJKelly 0:86a20b448fa5 240 sprintf( buffer, "%s", "--:--:--");
RogerJKelly 0:86a20b448fa5 241 //draw_window( buffer, 160, 22, 32, 146, ROTATE_270, UNCOLORED ); // clock window
RogerJKelly 0:86a20b448fa5 242 }
RogerJKelly 0:86a20b448fa5 243 else
RogerJKelly 0:86a20b448fa5 244 {
RogerJKelly 0:86a20b448fa5 245 sprintf( txtbuf, "%s", " ON " );
RogerJKelly 0:86a20b448fa5 246 //draw_window( buffer, 160, 22, 32, 146, ROTATE_270, COLORED ); // clock window
RogerJKelly 0:86a20b448fa5 247 }
RogerJKelly 0:86a20b448fa5 248
RogerJKelly 0:86a20b448fa5 249 draw_window( txtbuf, 10, 10, 32, 80, ROTATE_270, COLORED ); // status On Off, was at x=70
RogerJKelly 0:86a20b448fa5 250 }
RogerJKelly 0:86a20b448fa5 251 //if( rpg1.pb() ) //B_ENTER == 0 )
RogerJKelly 0:86a20b448fa5 252 //{
RogerJKelly 0:86a20b448fa5 253 // draw_window( buffer, 100, 72, 32, 126, ROTATE_270, UNCOLORED );
RogerJKelly 0:86a20b448fa5 254 //}
RogerJKelly 0:86a20b448fa5 255 //else
RogerJKelly 0:86a20b448fa5 256 //{
RogerJKelly 0:86a20b448fa5 257 // draw_window( buffer, 100, 72, 32, 126, ROTATE_270, COLORED );
RogerJKelly 0:86a20b448fa5 258 //}
RogerJKelly 0:86a20b448fa5 259 /************************************************************************
RogerJKelly 0:86a20b448fa5 260 epd.SetWidth(32);
RogerJKelly 0:86a20b448fa5 261 epd.SetHeight(126);
RogerJKelly 0:86a20b448fa5 262 epd.SetRotate(ROTATE_270);
RogerJKelly 0:86a20b448fa5 263 //memset(frame_black, 0xEE, sizeof(unsigned char)*EPD_HEIGHT*EPD_WIDTH/8);
RogerJKelly 0:86a20b448fa5 264 //epd.SetFrameMemory(frame_black, 80, 72, epd.GetWidth(), epd.GetHeight());
RogerJKelly 0:86a20b448fa5 265
RogerJKelly 0:86a20b448fa5 266 epd.Clear(frame_black, UNCOLORED);
RogerJKelly 0:86a20b448fa5 267 epd.DrawStringAt(frame_black, 4, 4, buffer, &Font24, COLORED);
RogerJKelly 0:86a20b448fa5 268 epd.DrawRectangle(frame_black, 2, 2, 120, 30, COLORED);
RogerJKelly 0:86a20b448fa5 269
RogerJKelly 0:86a20b448fa5 270 epd.SetFrameMemory(frame_black, 80, 72, epd.GetWidth(), epd.GetHeight());
RogerJKelly 0:86a20b448fa5 271 *************************************************************************/
RogerJKelly 0:86a20b448fa5 272 epd.DisplayFrame();
RogerJKelly 0:86a20b448fa5 273
RogerJKelly 0:86a20b448fa5 274 //if( rpg1.pb() == false ) //B_ENTER == 1 )
RogerJKelly 0:86a20b448fa5 275 if ( menu_sel == true )
RogerJKelly 0:86a20b448fa5 276 {
RogerJKelly 0:86a20b448fa5 277 button_pressed = false;
RogerJKelly 0:86a20b448fa5 278 menu_sel = false;
RogerJKelly 0:86a20b448fa5 279 }
RogerJKelly 0:86a20b448fa5 280 }
RogerJKelly 0:86a20b448fa5 281 }
RogerJKelly 0:86a20b448fa5 282
RogerJKelly 0:86a20b448fa5 283
RogerJKelly 0:86a20b448fa5 284 void draw_window( char *buf, int x, int y, int width, int height, int rot, int colored )
RogerJKelly 0:86a20b448fa5 285 {
RogerJKelly 0:86a20b448fa5 286 int uncolored = UNCOLORED;
RogerJKelly 0:86a20b448fa5 287 epd.SetWidth(width);
RogerJKelly 0:86a20b448fa5 288 epd.SetHeight(height);
RogerJKelly 0:86a20b448fa5 289 epd.SetRotate(rot);
RogerJKelly 0:86a20b448fa5 290 if ( colored == UNCOLORED ){ uncolored = COLORED; }
RogerJKelly 0:86a20b448fa5 291 epd.Clear(frame_black, uncolored);
RogerJKelly 0:86a20b448fa5 292 epd.DrawStringAt(frame_black, 4, 4, buf, &Font24, colored);
RogerJKelly 0:86a20b448fa5 293 //epd.DrawRectangle(frame_black, 2, 2, 120, 30, COLORED);
RogerJKelly 0:86a20b448fa5 294 epd.DrawRectangle(frame_black, 2, 2, height - 2, width - 2, colored);
RogerJKelly 0:86a20b448fa5 295 epd.SetFrameMemory(frame_black, x, y, width, height); // copies buffer into screen frame memory
RogerJKelly 0:86a20b448fa5 296 }
RogerJKelly 0:86a20b448fa5 297
RogerJKelly 0:86a20b448fa5 298 char dow[][5] = {"Sun ", "Mon ", "Tue ", "Wed ", "Thur", "Fri ", "Sat " };
RogerJKelly 0:86a20b448fa5 299
RogerJKelly 0:86a20b448fa5 300
RogerJKelly 0:86a20b448fa5 301 void draw_menu_window( int mptr, int start, int runtime, enum cal_selected sel, int colored )
RogerJKelly 0:86a20b448fa5 302 {
RogerJKelly 0:86a20b448fa5 303 int uncolored = UNCOLORED;
RogerJKelly 0:86a20b448fa5 304 int x,y;
RogerJKelly 0:86a20b448fa5 305 char txtbuf[32];
RogerJKelly 0:86a20b448fa5 306 //int hours = 0;
RogerJKelly 0:86a20b448fa5 307 //int width, height;
RogerJKelly 0:86a20b448fa5 308 //x = menu_days[mptr].x;
RogerJKelly 0:86a20b448fa5 309 //y = menu_days[mptr].y;
RogerJKelly 0:86a20b448fa5 310 x = mptr * SMALL_MENU_WINDOW_WIDTH + SMALL_MENU_WINDOW_X_OFFSET;
RogerJKelly 0:86a20b448fa5 311 //y = mptr * SMALL_MENU_WINDOW_HEIGHT + SMALL_MENU_WINDOW_Y_OFFSET;
RogerJKelly 0:86a20b448fa5 312 y = SMALL_MENU_WINDOW_Y_OFFSET;
RogerJKelly 0:86a20b448fa5 313
RogerJKelly 0:86a20b448fa5 314 epd.SetWidth(SMALL_MENU_WINDOW_WIDTH);
RogerJKelly 0:86a20b448fa5 315 epd.SetHeight(SMALL_MENU_WINDOW_HEIGHT);
RogerJKelly 0:86a20b448fa5 316 epd.SetRotate(ROTATE_270);
RogerJKelly 0:86a20b448fa5 317 if ( runtime > 60 )
RogerJKelly 0:86a20b448fa5 318 runtime = runtime/60;
RogerJKelly 0:86a20b448fa5 319
RogerJKelly 0:86a20b448fa5 320 if ( start > START_HOUR_MIN )
RogerJKelly 0:86a20b448fa5 321 {
RogerJKelly 0:86a20b448fa5 322 sprintf( txtbuf, "%s %02d:00 %2d", dow[mptr], start, runtime);
RogerJKelly 0:86a20b448fa5 323 }
RogerJKelly 0:86a20b448fa5 324 else
RogerJKelly 0:86a20b448fa5 325 {
RogerJKelly 0:86a20b448fa5 326 sprintf( txtbuf, "%s %s", dow[mptr], " OFF " );
RogerJKelly 0:86a20b448fa5 327 }
RogerJKelly 0:86a20b448fa5 328
RogerJKelly 0:86a20b448fa5 329 //if ( colored == UNCOLORED ){ uncolored = COLORED; }
RogerJKelly 0:86a20b448fa5 330 if ( sel != NotSel ) { uncolored = COLORED; colored = UNCOLORED;}
RogerJKelly 0:86a20b448fa5 331 epd.Clear(frame_black, uncolored);
RogerJKelly 0:86a20b448fa5 332 epd.DrawStringAt(frame_black, 4, 4, txtbuf, &Font16, colored);
RogerJKelly 0:86a20b448fa5 333 //epd.DrawRectangle(frame_black, 2, 2, 120, 30, COLORED);
RogerJKelly 0:86a20b448fa5 334 //epd.DrawRectangle(frame_black, 2, 2, height - 2, width - 2, colored);
RogerJKelly 0:86a20b448fa5 335 epd.SetFrameMemory(frame_black, x, y, SMALL_MENU_WINDOW_WIDTH, SMALL_MENU_WINDOW_HEIGHT); // copies buffer into screen frame memory
RogerJKelly 0:86a20b448fa5 336 }