Skip to content

Commit db77c94

Browse files
committed
added ReadMemory
1 parent fc3a38b commit db77c94

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

lib_MC2PA8201/inc/MC2PA8201.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,5 +211,6 @@ void MC2PA8201_PutStrCEOL(char *pString, uint16_t x, uint16_t y);
211211
void MC2PA8201_PutStrCentered(char *pString, uint16_t y);
212212

213213
void MC2PA8201_ReadRegister(uint8_t reg,uint8_t length,uint8_t *val);
214+
void MC2PA8201_ReadMemory(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint8_t *buf);
214215

215216
#endif

lib_MC2PA8201/src/MC2PA8201.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,3 +683,37 @@ void MC2PA8201_ReadRegister(uint8_t reg,uint8_t length,uint8_t *val) {
683683
val[i]=rd_dat();
684684
}
685685
}
686+
687+
void MC2PA8201_ReadMemory(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint8_t *data) {
688+
689+
uint8_t i,j=(x1-x0+1)*(y1-y0+1);
690+
691+
MC2PA8201_SetReadWindow(x0,y0,x1,y1);
692+
// first read is dummy read
693+
*data=rd_dat();
694+
695+
switch(MC2PA8201_color_mode) {
696+
case COLOR_12BIT:
697+
// always reading even count of pixels
698+
for(i=0;i<j;i+=2) {
699+
*data++=rd_dat();
700+
*data++=rd_dat();
701+
*data++=rd_dat();
702+
}
703+
break;
704+
case COLOR_16BIT:
705+
for(i=0;i<j;i++) {
706+
*data++=rd_dat();
707+
*data++=rd_dat();
708+
}
709+
break;
710+
case COLOR_18BIT:
711+
case COLOR_24BIT:
712+
for(i=0;i<j;i++) {
713+
*data++=rd_dat();
714+
*data++=rd_dat();
715+
*data++=rd_dat();
716+
}
717+
break;
718+
}
719+
}

0 commit comments

Comments
 (0)