static ucg_int_t ucg_handle_ld50t6160_l90tc(ucg_t *ucg) { if ( ucg_clip_l90tc(ucg) != 0 ) { uint8_t buf[3]; ucg_int_t dx, dy; ucg_int_t i; const uint8_t *seq; unsigned char pixmap; uint8_t bitcnt; ucg_com_SetCSLineStatus(ucg, 0); /* enable chip */ switch(ucg->arg.dir) { case 0: dx = 1; dy = 0; seq = ucg_ld50t6160_set_pos_dir0_seq; break; case 1: dx = 0; dy = 1; seq = ucg_ld50t6160_set_pos_dir1_seq; break; case 2: dx = -1; dy = 0; seq = ucg_ld50t6160_set_pos_dir2_seq; break; case 3: default: dx = 0; dy = -1; seq = ucg_ld50t6160_set_pos_dir3_seq; break; } pixmap = ucg_pgm_read(ucg->arg.bitmap); bitcnt = ucg->arg.pixel_skip; pixmap <<= bitcnt; buf[0] = ucg->arg.pixel.rgb.color[0]>>2; buf[1] = ucg->arg.pixel.rgb.color[1]>>2; buf[2] = ucg->arg.pixel.rgb.color[2]>>2; for( i = 0; i < ucg->arg.len; i++ ) { if ( (pixmap & 128) != 0 ) { ucg_com_SendCmdSeq(ucg, seq); ucg_com_SendRepeat3Bytes(ucg, 1, buf); } pixmap<<=1; ucg->arg.pixel.pos.x+=dx; ucg->arg.pixel.pos.y+=dy; bitcnt++; if ( bitcnt >= 8 ) { ucg->arg.bitmap++; pixmap = ucg_pgm_read(ucg->arg.bitmap); bitcnt = 0; } } ucg_com_SetCSLineStatus(ucg, 1); /* disable chip */ return 1; }
ucg_int_t ICACHE_FLASH_ATTR ucg_handle_ili9163_l90fx(ucg_t *ucg) { uint8_t c[3]; ucg_int_t tmp; if ( ucg_clip_l90fx(ucg) != 0 ) { switch(ucg->arg.dir) { case 0: ucg->arg.pixel.pos.y += 32; ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir0_seq); ucg->arg.pixel.pos.y -= 32; break; case 1: ucg->arg.pixel.pos.y += 32; ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir1_seq); ucg->arg.pixel.pos.y -= 32; break; case 2: tmp = ucg->arg.pixel.pos.x; ucg->arg.pixel.pos.x = 127-tmp; ucg->arg.pixel.pos.y += 32; ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir2_seq); ucg->arg.pixel.pos.y -= 32; ucg->arg.pixel.pos.x = tmp; break; case 3: default: tmp = ucg->arg.pixel.pos.y; ucg->arg.pixel.pos.y = 127-tmp; //ucg->arg.pixel.pos.y += 32; ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir3_seq); ucg->arg.pixel.pos.y = tmp; break; } c[0] = ucg->arg.pixel.rgb.color[0]; c[1] = ucg->arg.pixel.rgb.color[1]; c[2] = ucg->arg.pixel.rgb.color[2]; ucg_com_SendRepeat3Bytes(ucg, ucg->arg.len, c); ucg_com_SetCSLineStatus(ucg, 1); /* disable chip */ return 1; } return 0; }
static ucg_int_t ucg_handle_ld50t6160_l90fx(ucg_t *ucg) { uint8_t c[3]; //ucg_int_t tmp; if ( ucg_clip_l90fx(ucg) != 0 ) { switch(ucg->arg.dir) { case 0: ucg_com_SendCmdSeq(ucg, ucg_ld50t6160_set_pos_dir0_seq); break; case 1: ucg_com_SendCmdSeq(ucg, ucg_ld50t6160_set_pos_dir1_seq); break; case 2: //tmp = ucg->arg.pixel.pos.x; //ucg->arg.pixel.pos.x = 127-tmp; ucg_com_SendCmdSeq(ucg, ucg_ld50t6160_set_pos_dir2_seq); //ucg->arg.pixel.pos.x = tmp; break; case 3: default: //tmp = ucg->arg.pixel.pos.y; //ucg->arg.pixel.pos.y = 159-tmp; ucg_com_SendCmdSeq(ucg, ucg_ld50t6160_set_pos_dir3_seq); //ucg->arg.pixel.pos.y = tmp; break; } c[0] = ucg->arg.pixel.rgb.color[0]>>2; c[1] = ucg->arg.pixel.rgb.color[1]>>2; c[2] = ucg->arg.pixel.rgb.color[2]>>2; ucg_com_SendRepeat3Bytes(ucg, ucg->arg.len, c); ucg_com_SetCSLineStatus(ucg, 1); /* disable chip */ return 1; } return 0; }