uint8_t u8g_dev_ssd1351_128x128gh_332_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) { // u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); switch(msg) { case U8G_DEV_MSG_INIT: u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128gh_init_seq); break; case U8G_DEV_MSG_STOP: break; case U8G_DEV_MSG_PAGE_FIRST: u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); break; case U8G_DEV_MSG_PAGE_NEXT: { u8g_uint_t x; uint8_t page_height; uint8_t i; u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); uint8_t *ptr = (uint8_t *)pb->buf; u8g_SetChipSelect(u8g, dev, 1); page_height = pb->p.page_y1; page_height -= pb->p.page_y0; page_height++; for( i = 0; i < page_height; i++ ) { for (x = 0; x < pb->width; x+=RGB332_STREAM_BYTES) { u8g_ssd1351_to_stream(ptr); u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); ptr += RGB332_STREAM_BYTES; } } u8g_SetChipSelect(u8g, dev, 0); } break; case U8G_DEV_MSG_GET_MODE: return U8G_MODE_R3G3B2; } return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); }
uint8_t u8g_dev_ssd1351_128x128_idx_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) { // u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); switch(msg) { case U8G_DEV_MSG_INIT: u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); break; case U8G_DEV_MSG_STOP: break; case U8G_DEV_MSG_SET_COLOR_ENTRY: u8g_dev_ssd1351_128x128_r[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->r; u8g_dev_ssd1351_128x128_g[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->g; u8g_dev_ssd1351_128x128_b[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->b; break; case U8G_DEV_MSG_PAGE_FIRST: u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); break; case U8G_DEV_MSG_PAGE_NEXT: { int x; u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); uint8_t *ptr = (uint8_t *)pb->buf; u8g_SetChipSelect(u8g, dev, 1); for (x = 0; x < pb->width; x++) { u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_r[(*ptr)>>2]); u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_g[(*ptr)>>2]); u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_b[(*ptr)>>2]); ptr++; } u8g_SetChipSelect(u8g, dev, 0); } break; case U8G_DEV_MSG_GET_MODE: return U8G_MODE_INDEX; } return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); }
uint8_t u8g_dev_ili9325d_320x240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) { switch(msg) { case U8G_DEV_MSG_INIT: u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); //for(;;) u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_init_seq); break; case U8G_DEV_MSG_STOP: break; case U8G_DEV_MSG_PAGE_NEXT: { uint8_t i; uint16_t y, j; uint8_t *ptr; u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); y = pb->p.page_y0; ptr = pb->buf; for( i = 0; i < pb->p.page_height; i ++ ) { u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_page_seq); u8g_WriteByte(u8g, dev, y >> 8 ); /* display ram (cursor) address high byte */ u8g_WriteByte(u8g, dev, y & 255 ); /* display ram (cursor) address low byte */ u8g_SetAddress(u8g, dev, 0); /* cmd mode */ u8g_WriteByte(u8g, dev, 0 ); u8g_WriteByte(u8g, dev, 0x022 ); /* start gram data */ u8g_SetAddress(u8g, dev, 1); /* data mode */ for( j = 0; j < pb->width; j++ ) { u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_high_byte(*ptr) ); u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_low_byte(*ptr) ); ptr++; } y++; } u8g_SetChipSelect(u8g, dev, 0); } break; } return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); }