123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 |
- #include <stddef.h>
- #include "u8g.h"
- uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
- {
- return dev->dev_fn(u8g, dev, msg, arg);
- }
- uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- uint8_t r;
- u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV);
- r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_INIT, NULL);
- u8g->state_cb(U8G_STATE_MSG_BACKUP_U8G);
- u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV);
- return r;
- }
- void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV);
- u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G);
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_FIRST, NULL);
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page));
- u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV);
- }
- uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- uint8_t r;
- u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV);
- u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G);
- r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_NEXT, NULL);
- if ( r != 0 )
- {
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page));
- }
- u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV);
- return r;
- }
- uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast)
- {
- return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_CONTRAST, &contrast);
- }
- void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y)
- {
- u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel);
- arg->x = x;
- arg->y = y;
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_PIXEL, arg);
- }
- void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
- {
- u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel);
- arg->x = x;
- arg->y = y;
- arg->dir = dir;
- arg->pixel = pixel;
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_8PIXEL, arg);
- }
- #ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION
- uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
- {
- return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_IS_BBX_INTERSECTION, &arg);
- }
- #endif
- u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- u8g_uint_t r;
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_WIDTH, &r);
- return r;
- }
- u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- u8g_uint_t r;
- u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_HEIGHT, &r);
- return r;
- }
- u8g_uint_t u8g_GetModeLL(u8g_t *u8g, u8g_dev_t *dev)
- {
- return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_MODE, NULL);
- }
- void u8g_UpdateDimension(u8g_t *u8g)
- {
- u8g->width = u8g_GetWidthLL(u8g, u8g->dev);
- u8g->height = u8g_GetHeightLL(u8g, u8g->dev);
- u8g->mode = u8g_GetModeLL(u8g, u8g->dev);
-
- u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page));
- }
- static void u8g_init_data(u8g_t *u8g)
- {
- uint8_t i;
- u8g->font = NULL;
- u8g->cursor_font = NULL;
- u8g->cursor_bg_color = 0;
- u8g->cursor_fg_color = 1;
- u8g->cursor_encoding = 34;
- u8g->cursor_fn = (u8g_draw_cursor_fn)0;
-
- for( i = 0; i < U8G_PIN_LIST_LEN; i++ )
- u8g->pin_list[i] = U8G_PIN_NONE;
- u8g_SetColorIndex(u8g, 1);
- u8g_SetFontPosBaseline(u8g);
-
- u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT;
- u8g->font_ref_ascent = 0;
- u8g->font_ref_descent = 0;
- u8g->font_line_spacing_factor = 64;
- u8g->line_spacing = 0;
-
- u8g->state_cb = u8g_state_dummy_cb;
- }
- uint8_t u8g_Begin(u8g_t *u8g)
- {
-
- if ( u8g_InitLL(u8g, u8g->dev) == 0 )
- return 0;
-
- u8g_UpdateDimension(u8g);
- return 1;
- }
- uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev)
- {
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
-
-
-
- return u8g_Begin(u8g);
- }
- uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset)
- {
-
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
- u8g->pin_list[U8G_PI_SCK] = sck;
- u8g->pin_list[U8G_PI_MOSI] = mosi;
- u8g->pin_list[U8G_PI_CS] = cs;
- u8g->pin_list[U8G_PI_A0] = a0;
- u8g->pin_list[U8G_PI_RESET] = reset;
-
-
-
-
-
- return u8g_Begin(u8g);
- }
- uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset)
- {
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
-
- u8g->pin_list[U8G_PI_CS] = cs;
- u8g->pin_list[U8G_PI_A0] = a0;
- u8g->pin_list[U8G_PI_RESET] = reset;
-
- return u8g_Begin(u8g);
- }
- uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options)
- {
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
- u8g->pin_list[U8G_PI_I2C_OPTION] = options;
-
- return u8g_Begin(u8g);
- }
- uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset)
- {
-
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
- u8g->pin_list[U8G_PI_EN] = en;
- u8g->pin_list[U8G_PI_CS] = cs;
- u8g->pin_list[U8G_PI_DI] = di;
- u8g->pin_list[U8G_PI_RW] = rw;
- u8g->pin_list[U8G_PI_RESET] = reset;
- return u8g_Begin(u8g);
- }
- uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
- uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset)
- {
-
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
- u8g->pin_list[U8G_PI_D0] = d0;
- u8g->pin_list[U8G_PI_D1] = d1;
- u8g->pin_list[U8G_PI_D2] = d2;
- u8g->pin_list[U8G_PI_D3] = d3;
- u8g->pin_list[U8G_PI_D4] = d4;
- u8g->pin_list[U8G_PI_D5] = d5;
- u8g->pin_list[U8G_PI_D6] = d6;
- u8g->pin_list[U8G_PI_D7] = d7;
- u8g->pin_list[U8G_PI_EN] = en;
- u8g->pin_list[U8G_PI_CS1] = cs1;
- u8g->pin_list[U8G_PI_CS2] = cs2;
- u8g->pin_list[U8G_PI_DI] = di;
- u8g->pin_list[U8G_PI_RW] = rw;
- u8g->pin_list[U8G_PI_RESET] = reset;
-
- return u8g_Begin(u8g);
- }
- uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
- uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset)
- {
-
-
- u8g_init_data(u8g);
- u8g->dev = dev;
-
-
- u8g->pin_list[U8G_PI_D0] = d0;
- u8g->pin_list[U8G_PI_D1] = d1;
- u8g->pin_list[U8G_PI_D2] = d2;
- u8g->pin_list[U8G_PI_D3] = d3;
- u8g->pin_list[U8G_PI_D4] = d4;
- u8g->pin_list[U8G_PI_D5] = d5;
- u8g->pin_list[U8G_PI_D6] = d6;
- u8g->pin_list[U8G_PI_D7] = d7;
- u8g->pin_list[U8G_PI_CS] = cs;
- u8g->pin_list[U8G_PI_A0] = a0;
- u8g->pin_list[U8G_PI_WR] = wr;
- u8g->pin_list[U8G_PI_RD] = rd;
- u8g->pin_list[U8G_PI_RESET] = reset;
-
- return u8g_Begin(u8g);
- }
- void u8g_FirstPage(u8g_t *u8g)
- {
- u8g_FirstPageLL(u8g, u8g->dev);
- }
- uint8_t u8g_NextPage(u8g_t *u8g)
- {
- if ( u8g->cursor_fn != (u8g_draw_cursor_fn)0 )
- {
- u8g->cursor_fn(u8g);
- }
- return u8g_NextPageLL(u8g, u8g->dev);
- }
- uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast)
- {
- return u8g_SetContrastLL(u8g, u8g->dev, contrast);
- }
- void u8g_SleepOn(u8g_t *u8g)
- {
- u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_ON, NULL);
- }
- void u8g_SleepOff(u8g_t *u8g)
- {
- u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_OFF, NULL);
- }
- void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y)
- {
- u8g_DrawPixelLL(u8g, u8g->dev, x, y);
- }
- void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
- {
- u8g_Draw8PixelLL(u8g, u8g->dev, x, y, dir, pixel);
- }
- #ifdef OBSOLETE_CODE
- uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
- {
-
- u8g_dev_arg_bbx_t arg;
- arg.x = x;
- arg.y = y;
- arg.w = w;
- arg.h = h;
- return u8g_is_box_bbx_intersection(&(u8g->current_page), &arg);
-
-
- }
- #endif
- void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx)
- {
- u8g->arg_pixel.color = idx;
-
- }
- uint8_t u8g_GetColorIndex(u8g_t *u8g)
- {
- return u8g->arg_pixel.color;
- }
- uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g)
- {
- uint8_t mode;
- mode = u8g_GetMode(u8g);
- if ( mode == U8G_MODE_R3G3B2 )
- return 255;
- else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT )
- return 3;
- else
- return 1;
- return 1;
- }
- void u8g_SetDefaultForegroundColor(u8g_t *u8g)
- {
- u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g));
- }
- uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g)
- {
- return 0;
- }
- void u8g_SetDefaultBackgroundColor(u8g_t *u8g)
- {
- u8g_SetColorIndex(u8g, u8g_GetDefaultBackgroundColor(u8g));
- }
- uint8_t u8g_GetDefaultMidColor(u8g_t *u8g)
- {
- uint8_t mode;
- mode = u8g_GetMode(u8g);
- if ( mode == U8G_MODE_R3G3B2 )
- return 0x06d;
- else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT )
- return 1;
- else
- return 1;
- return 1;
- }
- void u8g_SetDefaultMidColor(u8g_t *u8g)
- {
- u8g_SetColorIndex(u8g, u8g_GetDefaultMidColor(u8g));
- }
|