#include <time.h>
#include <termios.h>
#include <ctype.h>
+#include <math.h>
#include <errno.h>
mw_free_pbuffer(mwbuf);
}
+void draw_app_ana_clock(mwdevice_t *mwdevice, int hour, int minute, unsigned char day)
+{
+ mw_buffer *mwbuf;
+ unsigned char *bbuf;
+ char daystr[5];
+ int len;
+ unsigned int i, x, y, x2, y2;
+ double tmp, mf;
+
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_IDLE, MW_BUTTON_A, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_A);
+
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_APPLICATION, MW_BUTTON_A, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_A);
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_APPLICATION, MW_BUTTON_B, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_B);
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_APPLICATION, MW_BUTTON_C, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_C);
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_APPLICATION, MW_BUTTON_E, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_E);
+ mw_enable_button(mwdevice, MW_SCREEN_MODE_APPLICATION, MW_BUTTON_F, MW_BUTTON_IMMEDIATE, MW_BUTTON_EVENT_MESSAGE, MW_BUTTON_F);
+ mw_configure_watch_mode(mwdevice, MW_SCREEN_MODE_APPLICATION, 0, 30, 0);
+
+ mwbuf = mw_alloc_pbuffer(96, 96, 1);
+ mw_buf_clear(mwbuf, MW_BLACK);
+
+ hour -= 3;
+ mf = (1. / 59.) * (double)minute;
+ minute -= 15;
+
+ // plot(R*cos(360° * i/N), R*sin(360° * i/N))
+ for (i=0; i<12; i++) {
+ tmp = 48. + (43. * cos(((2. * M_PI) / 12.) * (double)i));
+ x = tmp;
+ tmp = 48 + (43. * sin(((2. * M_PI) / 12.) * (double)i));
+ y = tmp;
+ tmp = 48. + (48. * cos(((2. * M_PI) / 12.) * (double)i));
+ x2 = tmp;
+ tmp = 48 + (48. * sin(((2. * M_PI) / 12.) * (double)i));
+ y2 = tmp;
+ mw_buf_draw_line_bresenham_w(mwbuf, x, y, x2, y2, 2, MW_WHITE);
+ };
+ // Hour
+ g_print("hour = %d -> %f (%f)\n", hour, (double)hour + mf, mf);
+ tmp = 48. + (30. * cos(((2. * M_PI) / 12.) * ((double)hour + mf)));
+ x = tmp;
+ tmp = 48 + (30. * sin(((2. * M_PI) / 12.) * ((double)hour + mf)));
+ y = tmp;
+ mw_buf_draw_line_bresenham_w(mwbuf, 48, 48, x, y, 2, MW_WHITE);
+ // Minute
+ tmp = 48. + (40. * cos(((2. * M_PI) / 60.) * (double)minute));
+ x = tmp;
+ tmp = 48 + (40. * sin(((2. * M_PI) / 60.) * (double)minute));
+ y = tmp;
+ mw_buf_draw_line_bresenham_w(mwbuf, 48, 48, x, y, 2, MW_WHITE);
+
+ snprintf(daystr, 5, "%d", day);
+ mw_buf_print(mwbuf, 74, 45, daystr, 0, MW_WHITE, MW_BLACK);
+
+ bbuf = mw_make_mw_buffer(mwbuf, &len);
+ mw_send_bitmap(mwdevice, MW_SCREEN_MODE_APPLICATION, 96, 96, 0, bbuf, len);
+ mw_update_display(mwdevice, MW_SCREEN_MODE_APPLICATION, 1);
+ mw_free_pbuffer(mwbuf);
+}
+
void test_oled(mwdevice_t *mwdevice, unsigned char oled)
{
mw_buffer *mwbuf;
static void params_free(char **params)
{
int i;
+
for (i=0; i < PARAMS_MAX; i++)
- free(params[i]);
+ if (params[i] != NULL)
+ free(params[i]);
}
void process_cmd(char *cmdline, int clinep, mwdata_t *mwdata)
{
unsigned char mdata[32];
- unsigned int intopt;
+ unsigned int intopt=0;
char cmd[128], pbuf[128], *params[PARAMS_MAX];
int i, pcnt;
char *inbuf = cmdline;
pcnt = 0;
if (strncmp(cmd, "quit", 4) == 0) {
- //close(mw_fd);
- //exit(0);
/* just in case we quit and show another screen */
mw_update_display(&mwdata->mwdevice, MW_SCREEN_MODE_IDLE, 0);
- params_free(params);
+ // params_free(params);
g_main_loop_quit (mwdata->mloop);
}
if (strncmp(cmd, "help", 4) == 0) {
if (strncmp(cmd, "wet", 3) == 0) {
do_weather(mwdata);
}
+ if (strncmp(cmd, "lang_de", 7) == 0) {
+ mdata[0] = MW_LANG_DE;
+ mw_nval_operation(&mwdata->mwdevice, MW_NVAL_OPERATION_WRITE, MW_NVAL_LANGUAGE , 1, mdata);
+ }
if (strncmp(cmd, "c24", 3) == 0) {
mdata[0] = MW_RTC_CLOCK_24HR;
mw_nval_operation(&mwdata->mwdevice, MW_NVAL_OPERATION_WRITE, MW_NVAL_TIME_FORMAT, 1, mdata);
mdata[0] = 0;
mw_nval_operation(&mwdata->mwdevice, MW_NVAL_OPERATION_READ, MW_NVAL_DATE_FORMAT, 1, mdata);
}
+ if (strncmp(cmd, "dana", 4) == 0) {
+ if (pcnt < 3)
+ g_print("two few params, hour minute, day of month\ndana h m d\n");
+ else {
+ draw_app_ana_clock(&mwdata->mwdevice, atoi(params[0]), atoi(params[1]), atoi(params[2]));
+ }
+ }
+
params_free(params);
}