PSoCのライブラリはクラスじゃないのがつくづくイラっとするけど、関数ポインタを使ってテーブル化したりクラスもどき構造体を作る手はあるな。
テーブル化
typedef uint16 (*UART_GetByte)(void); UART_GetByte uart_GetByte[] = { UART_1_GetByte, UART_2_GetByte, UART_3_GetByte, UART_4_GetByte, };
for(i=0;i<4;i++){ uint16 data = uart_GetByte[i](); }
クラスもどき化
typedef struct { uint16 (*GetByte)(void); uint8 (*GetRxBufferSize)(void); } UART; UART uart[]={ { UART_1_GetByte, UART_1_GetRxBufferSize }, { UART_2_GetByte, UART_2_GetRxBufferSize }, { UART_3_GetByte, UART_3_GetRxBufferSize }, { UART_4_GetByte, UART_4_GetRxBufferSize }, };
for(i=0;i<4;i++){ uint8 size = uart[i].GetRxBufferSize(); for(j=0;j<size;j++){ uint16 data = uart[i].GetByte(); } }