#ifndef GPIO_H__
#define GPIO_H__

/* --- PORT  Data Direction --- */
#define GPIO_DIR_PORT00_PIN00 PORT_AWOPM0_0
#define GPIO_DIR_PORT00_PIN01 PORT_AWOPM0_1
#define GPIO_DIR_PORT00_PIN02 PORT_AWOPM0_2
#define GPIO_DIR_PORT00_PIN03 PORT_AWOPM0_3
#define GPIO_DIR_PORT00_PIN04 PORT_AWOPM0_4
#define GPIO_DIR_PORT00_PIN05 PORT_AWOPM0_5
#define GPIO_DIR_PORT00_PIN06 PORT_AWOPM0_6
#define GPIO_DIR_PORT00_PIN07 PORT_AWOPM0_7
#define GPIO_DIR_PORT00_PIN08 PORT_AWOPM0_8
#define GPIO_DIR_PORT00_PIN09 PORT_AWOPM0_9

#define GPIO_DIR_PORT01_PIN00 PORT_ISOPM1_0
#define GPIO_DIR_PORT01_PIN01 PORT_ISOPM1_1
#define GPIO_DIR_PORT01_PIN02 PORT_ISOPM1_2
#define GPIO_DIR_PORT01_PIN03 PORT_ISOPM1_3
#define GPIO_DIR_PORT01_PIN04 PORT_ISOPM1_4
#define GPIO_DIR_PORT01_PIN05 PORT_ISOPM1_5

#define GPIO_DIR_PORT03_PIN00 PORT_ISOPM3_0
#define GPIO_DIR_PORT03_PIN01 PORT_ISOPM3_1
#define GPIO_DIR_PORT03_PIN02 PORT_ISOPM3_2
#define GPIO_DIR_PORT03_PIN03 PORT_ISOPM3_3
#define GPIO_DIR_PORT03_PIN04 PORT_ISOPM3_4
#define GPIO_DIR_PORT03_PIN05 PORT_ISOPM3_5
#define GPIO_DIR_PORT03_PIN06 PORT_ISOPM3_6
#define GPIO_DIR_PORT03_PIN07 PORT_ISOPM3_7
#define GPIO_DIR_PORT03_PIN08 PORT_ISOPM3_8
#define GPIO_DIR_PORT03_PIN09 PORT_ISOPM3_9

#define GPIO_DIR_PORT10_PIN00 PORT_ISOPM10_0
#define GPIO_DIR_PORT10_PIN01 PORT_ISOPM10_1
#define GPIO_DIR_PORT10_PIN02 PORT_ISOPM10_2
#define GPIO_DIR_PORT10_PIN03 PORT_ISOPM10_3
#define GPIO_DIR_PORT10_PIN04 PORT_ISOPM10_4
#define GPIO_DIR_PORT10_PIN05 PORT_ISOPM10_5
#define GPIO_DIR_PORT10_PIN06 PORT_ISOPM10_6
#define GPIO_DIR_PORT10_PIN07 PORT_ISOPM10_7
#define GPIO_DIR_PORT10_PIN08 PORT_ISOPM10_8
#define GPIO_DIR_PORT10_PIN09 PORT_ISOPM10_9
#define GPIO_DIR_PORT10_PIN10 PORT_ISOPM10_10
#define GPIO_DIR_PORT10_PIN11 PORT_ISOPM10_11

#define GPIO_DIR_PORT11_PIN00 PORT_ISOPM11_0
#define GPIO_DIR_PORT11_PIN01 PORT_ISOPM11_1
#define GPIO_DIR_PORT11_PIN02 PORT_ISOPM11_2
#define GPIO_DIR_PORT11_PIN03 PORT_ISOPM11_3

#define GPIO_DIR_PORT16_PIN00 PORT_ISOPM16_0
#define GPIO_DIR_PORT16_PIN01 PORT_ISOPM16_1
#define GPIO_DIR_PORT16_PIN02 PORT_ISOPM16_2
#define GPIO_DIR_PORT16_PIN03 PORT_ISOPM16_3
#define GPIO_DIR_PORT16_PIN04 PORT_ISOPM16_4
#define GPIO_DIR_PORT16_PIN05 PORT_ISOPM16_5
#define GPIO_DIR_PORT16_PIN06 PORT_ISOPM16_6
#define GPIO_DIR_PORT16_PIN07 PORT_ISOPM16_7
#define GPIO_DIR_PORT16_PIN08 PORT_ISOPM16_8
#define GPIO_DIR_PORT16_PIN09 PORT_ISOPM16_9
#define GPIO_DIR_PORT16_PIN10 PORT_ISOPM16_10
#define GPIO_DIR_PORT16_PIN11 PORT_ISOPM16_11

#define GPIO_DIR_PORT17_PIN00 PORT_ISOPM17_0
#define GPIO_DIR_PORT17_PIN01 PORT_ISOPM17_1
#define GPIO_DIR_PORT17_PIN02 PORT_ISOPM17_2
#define GPIO_DIR_PORT17_PIN03 PORT_ISOPM17_3
#define GPIO_DIR_PORT17_PIN04 PORT_ISOPM17_4
#define GPIO_DIR_PORT17_PIN05 PORT_ISOPM17_5
#define GPIO_DIR_PORT17_PIN06 PORT_ISOPM17_6
#define GPIO_DIR_PORT17_PIN07 PORT_ISOPM17_7
#define GPIO_DIR_PORT17_PIN08 PORT_ISOPM17_8
#define GPIO_DIR_PORT17_PIN09 PORT_ISOPM17_9
#define GPIO_DIR_PORT17_PIN10 PORT_ISOPM17_10
#define GPIO_DIR_PORT17_PIN11 PORT_ISOPM17_11

#define GPIO_DIR_PORT21_PIN00 PORT_ISOPM21_0
#define GPIO_DIR_PORT21_PIN01 PORT_ISOPM21_1
#define GPIO_DIR_PORT21_PIN02 PORT_ISOPM21_2
#define GPIO_DIR_PORT21_PIN03 PORT_ISOPM21_3
#define GPIO_DIR_PORT21_PIN04 PORT_ISOPM21_4
#define GPIO_DIR_PORT21_PIN05 PORT_ISOPM21_5
#define GPIO_DIR_PORT21_PIN06 PORT_ISOPM21_6
#define GPIO_DIR_PORT21_PIN07 PORT_ISOPM21_7
#define GPIO_DIR_PORT21_PIN08 PORT_ISOPM21_8
#define GPIO_DIR_PORT21_PIN09 PORT_ISOPM21_9

#define GPIO_DIR_PORT22_PIN10 PORT_ISOPM22_10

#define GPIO_DIR_PORT42_PIN00 PORT_ISOPM42_0
#define GPIO_DIR_PORT42_PIN01 PORT_ISOPM42_1
#define GPIO_DIR_PORT42_PIN02 PORT_ISOPM42_2
#define GPIO_DIR_PORT42_PIN03 PORT_ISOPM42_3
#define GPIO_DIR_PORT42_PIN04 PORT_ISOPM42_4
#define GPIO_DIR_PORT42_PIN05 PORT_ISOPM42_5
#define GPIO_DIR_PORT42_PIN06 PORT_ISOPM42_6
#define GPIO_DIR_PORT42_PIN07 PORT_ISOPM42_7
#define GPIO_DIR_PORT42_PIN08 PORT_ISOPM42_8
#define GPIO_DIR_PORT42_PIN09 PORT_ISOPM42_9
#define GPIO_DIR_PORT42_PIN10 PORT_ISOPM42_10
#define GPIO_DIR_PORT42_PIN11 PORT_ISOPM42_11
#define GPIO_DIR_PORT42_PIN12 PORT_ISOPM42_12
#define GPIO_DIR_PORT42_PIN13 PORT_ISOPM42_13
#define GPIO_DIR_PORT42_PIN14 PORT_ISOPM42_14
#define GPIO_DIR_PORT42_PIN15 PORT_ISOPM42_15

#define GPIO_DIR_PORT43_PIN00 PORT_ISOPM43_0
#define GPIO_DIR_PORT43_PIN01 PORT_ISOPM43_1

#define GPIO_DIR_PORT44_PIN00 PORT_ISOPM44_0
#define GPIO_DIR_PORT44_PIN01 PORT_ISOPM44_1
#define GPIO_DIR_PORT44_PIN02 PORT_ISOPM44_2
#define GPIO_DIR_PORT44_PIN03 PORT_ISOPM44_3
#define GPIO_DIR_PORT44_PIN04 PORT_ISOPM44_4
#define GPIO_DIR_PORT44_PIN05 PORT_ISOPM44_5
#define GPIO_DIR_PORT44_PIN06 PORT_ISOPM44_6
#define GPIO_DIR_PORT44_PIN07 PORT_ISOPM44_7
#define GPIO_DIR_PORT44_PIN08 PORT_ISOPM44_8
#define GPIO_DIR_PORT44_PIN09 PORT_ISOPM44_9
#define GPIO_DIR_PORT44_PIN10 PORT_ISOPM44_10
#define GPIO_DIR_PORT44_PIN11 PORT_ISOPM44_11

#define GPIO_DIR_PORT45_PIN00 PORT_ISOPM45_0
#define GPIO_DIR_PORT45_PIN01 PORT_ISOPM45_1
#define GPIO_DIR_PORT45_PIN02 PORT_ISOPM45_2
#define GPIO_DIR_PORT45_PIN03 PORT_ISOPM45_3
#define GPIO_DIR_PORT45_PIN04 PORT_ISOPM45_4
#define GPIO_DIR_PORT45_PIN05 PORT_ISOPM45_5
#define GPIO_DIR_PORT45_PIN06 PORT_ISOPM45_6
#define GPIO_DIR_PORT45_PIN07 PORT_ISOPM45_7
#define GPIO_DIR_PORT45_PIN08 PORT_ISOPM45_8
#define GPIO_DIR_PORT45_PIN09 PORT_ISOPM45_9
#define GPIO_DIR_PORT45_PIN10 PORT_ISOPM45_10
#define GPIO_DIR_PORT45_PIN11 PORT_ISOPM45_11
#define GPIO_DIR_PORT45_PIN12 PORT_ISOPM45_12
#define GPIO_DIR_PORT45_PIN13 PORT_ISOPM45_13

#define GPIO_DIR_PORTJP0_PIN00 PORTJ_AWOJPM0_0
#define GPIO_DIR_PORTJP0_PIN01 PORTJ_AWOJPM0_1
#define GPIO_DIR_PORTJP0_PIN02 PORTJ_AWOJPM0_2
#define GPIO_DIR_PORTJP0_PIN03 PORTJ_AWOJPM0_3
#define GPIO_DIR_PORTJP0_PIN04 PORTJ_AWOJPM0_4
#define GPIO_DIR_PORTJP0_PIN05 PORTJ_AWOJPM0_5

/* --- PORT  Data Output Value --- */
#define GPIO_OUT_PORT00_PIN00 PORT_AWOP0_0
#define GPIO_OUT_PORT00_PIN01 PORT_AWOP0_1
#define GPIO_OUT_PORT00_PIN02 PORT_AWOP0_2
#define GPIO_OUT_PORT00_PIN03 PORT_AWOP0_3
#define GPIO_OUT_PORT00_PIN04 PORT_AWOP0_4
#define GPIO_OUT_PORT00_PIN05 PORT_AWOP0_5
#define GPIO_OUT_PORT00_PIN06 PORT_AWOP0_6
#define GPIO_OUT_PORT00_PIN07 PORT_AWOP0_7
#define GPIO_OUT_PORT00_PIN08 PORT_AWOP0_8
#define GPIO_OUT_PORT00_PIN09 PORT_AWOP0_9

#define GPIO_OUT_PORT01_PIN00 PORT_ISOP1_0
#define GPIO_OUT_PORT01_PIN01 PORT_ISOP1_1
#define GPIO_OUT_PORT01_PIN02 PORT_ISOP1_2
#define GPIO_OUT_PORT01_PIN03 PORT_ISOP1_3
#define GPIO_OUT_PORT01_PIN04 PORT_ISOP1_4
#define GPIO_OUT_PORT01_PIN05 PORT_ISOP1_5

#define GPIO_OUT_PORT03_PIN00 PORT_ISOP3_0
#define GPIO_OUT_PORT03_PIN01 PORT_ISOP3_1
#define GPIO_OUT_PORT03_PIN02 PORT_ISOP3_2
#define GPIO_OUT_PORT03_PIN03 PORT_ISOP3_3
#define GPIO_OUT_PORT03_PIN04 PORT_ISOP3_4
#define GPIO_OUT_PORT03_PIN05 PORT_ISOP3_5
#define GPIO_OUT_PORT03_PIN06 PORT_ISOP3_6
#define GPIO_OUT_PORT03_PIN07 PORT_ISOP3_7
#define GPIO_OUT_PORT03_PIN08 PORT_ISOP3_8
#define GPIO_OUT_PORT03_PIN09 PORT_ISOP3_9

#define GPIO_OUT_PORT10_PIN00 PORT_ISOP10_0
#define GPIO_OUT_PORT10_PIN01 PORT_ISOP10_1
#define GPIO_OUT_PORT10_PIN02 PORT_ISOP10_2
#define GPIO_OUT_PORT10_PIN03 PORT_ISOP10_3
#define GPIO_OUT_PORT10_PIN04 PORT_ISOP10_4
#define GPIO_OUT_PORT10_PIN05 PORT_ISOP10_5
#define GPIO_OUT_PORT10_PIN06 PORT_ISOP10_6
#define GPIO_OUT_PORT10_PIN07 PORT_ISOP10_7
#define GPIO_OUT_PORT10_PIN08 PORT_ISOP10_8
#define GPIO_OUT_PORT10_PIN09 PORT_ISOP10_9
#define GPIO_OUT_PORT10_PIN10 PORT_ISOP10_10
#define GPIO_OUT_PORT10_PIN11 PORT_ISOP10_11

#define GPIO_OUT_PORT11_PIN00 PORT_ISOP11_0
#define GPIO_OUT_PORT11_PIN01 PORT_ISOP11_1
#define GPIO_OUT_PORT11_PIN02 PORT_ISOP11_2
#define GPIO_OUT_PORT11_PIN03 PORT_ISOP11_3

#define GPIO_OUT_PORT16_PIN00 PORT_ISOP16_0
#define GPIO_OUT_PORT16_PIN01 PORT_ISOP16_1
#define GPIO_OUT_PORT16_PIN02 PORT_ISOP16_2
#define GPIO_OUT_PORT16_PIN03 PORT_ISOP16_3
#define GPIO_OUT_PORT16_PIN04 PORT_ISOP16_4
#define GPIO_OUT_PORT16_PIN05 PORT_ISOP16_5
#define GPIO_OUT_PORT16_PIN06 PORT_ISOP16_6
#define GPIO_OUT_PORT16_PIN07 PORT_ISOP16_7
#define GPIO_OUT_PORT16_PIN08 PORT_ISOP16_8
#define GPIO_OUT_PORT16_PIN09 PORT_ISOP16_9
#define GPIO_OUT_PORT16_PIN10 PORT_ISOP16_10
#define GPIO_OUT_PORT16_PIN11 PORT_ISOP16_11

#define GPIO_OUT_PORT17_PIN00 PORT_ISOP17_0
#define GPIO_OUT_PORT17_PIN01 PORT_ISOP17_1
#define GPIO_OUT_PORT17_PIN02 PORT_ISOP17_2
#define GPIO_OUT_PORT17_PIN03 PORT_ISOP17_3
#define GPIO_OUT_PORT17_PIN04 PORT_ISOP17_4
#define GPIO_OUT_PORT17_PIN05 PORT_ISOP17_5
#define GPIO_OUT_PORT17_PIN06 PORT_ISOP17_6
#define GPIO_OUT_PORT17_PIN07 PORT_ISOP17_7
#define GPIO_OUT_PORT17_PIN08 PORT_ISOP17_8
#define GPIO_OUT_PORT17_PIN09 PORT_ISOP17_9
#define GPIO_OUT_PORT17_PIN10 PORT_ISOP17_10
#define GPIO_OUT_PORT17_PIN11 PORT_ISOP17_11

#define GPIO_OUT_PORT21_PIN00 PORT_ISOP21_0
#define GPIO_OUT_PORT21_PIN01 PORT_ISOP21_1
#define GPIO_OUT_PORT21_PIN02 PORT_ISOP21_2
#define GPIO_OUT_PORT21_PIN03 PORT_ISOP21_3
#define GPIO_OUT_PORT21_PIN04 PORT_ISOP21_4
#define GPIO_OUT_PORT21_PIN05 PORT_ISOP21_5
#define GPIO_OUT_PORT21_PIN06 PORT_ISOP21_6
#define GPIO_OUT_PORT21_PIN07 PORT_ISOP21_7
#define GPIO_OUT_PORT21_PIN08 PORT_ISOP21_8
#define GPIO_OUT_PORT21_PIN09 PORT_ISOP21_9

#define GPIO_OUT_PORT22_PIN10 PORT_ISOP22_10

#define GPIO_OUT_PORT42_PIN00 PORT_ISOP42_0
#define GPIO_OUT_PORT42_PIN01 PORT_ISOP42_1
#define GPIO_OUT_PORT42_PIN02 PORT_ISOP42_2
#define GPIO_OUT_PORT42_PIN03 PORT_ISOP42_3
#define GPIO_OUT_PORT42_PIN04 PORT_ISOP42_4
#define GPIO_OUT_PORT42_PIN05 PORT_ISOP42_5
#define GPIO_OUT_PORT42_PIN06 PORT_ISOP42_6
#define GPIO_OUT_PORT42_PIN07 PORT_ISOP42_7
#define GPIO_OUT_PORT42_PIN08 PORT_ISOP42_8
#define GPIO_OUT_PORT42_PIN09 PORT_ISOP42_9
#define GPIO_OUT_PORT42_PIN10 PORT_ISOP42_10
#define GPIO_OUT_PORT42_PIN11 PORT_ISOP42_11
#define GPIO_OUT_PORT42_PIN12 PORT_ISOP42_12
#define GPIO_OUT_PORT42_PIN13 PORT_ISOP42_13
#define GPIO_OUT_PORT42_PIN14 PORT_ISOP42_14
#define GPIO_OUT_PORT42_PIN15 PORT_ISOP42_15

#define GPIO_OUT_PORT43_PIN00 PORT_ISOP43_0
#define GPIO_OUT_PORT43_PIN01 PORT_ISOP43_1

#define GPIO_OUT_PORT44_PIN00 PORT_ISOP44_0
#define GPIO_OUT_PORT44_PIN01 PORT_ISOP44_1
#define GPIO_OUT_PORT44_PIN02 PORT_ISOP44_2
#define GPIO_OUT_PORT44_PIN03 PORT_ISOP44_3
#define GPIO_OUT_PORT44_PIN04 PORT_ISOP44_4
#define GPIO_OUT_PORT44_PIN05 PORT_ISOP44_5
#define GPIO_OUT_PORT44_PIN06 PORT_ISOP44_6
#define GPIO_OUT_PORT44_PIN07 PORT_ISOP44_7
#define GPIO_OUT_PORT44_PIN08 PORT_ISOP44_8
#define GPIO_OUT_PORT44_PIN09 PORT_ISOP44_9
#define GPIO_OUT_PORT44_PIN10 PORT_ISOP44_10
#define GPIO_OUT_PORT44_PIN11 PORT_ISOP44_11

#define GPIO_OUT_PORT45_PIN00 PORT_ISOP45_0
#define GPIO_OUT_PORT45_PIN01 PORT_ISOP45_1
#define GPIO_OUT_PORT45_PIN02 PORT_ISOP45_2
#define GPIO_OUT_PORT45_PIN03 PORT_ISOP45_3
#define GPIO_OUT_PORT45_PIN04 PORT_ISOP45_4
#define GPIO_OUT_PORT45_PIN05 PORT_ISOP45_5
#define GPIO_OUT_PORT45_PIN06 PORT_ISOP45_6
#define GPIO_OUT_PORT45_PIN07 PORT_ISOP45_7
#define GPIO_OUT_PORT45_PIN08 PORT_ISOP45_8
#define GPIO_OUT_PORT45_PIN09 PORT_ISOP45_9
#define GPIO_OUT_PORT45_PIN10 PORT_ISOP45_10
#define GPIO_OUT_PORT45_PIN11 PORT_ISOP45_11
#define GPIO_OUT_PORT45_PIN12 PORT_ISOP45_12
#define GPIO_OUT_PORT45_PIN13 PORT_ISOP45_13

#define GPIO_OUT_PORTJP0_PIN00 PORTJ_AWOJP0_0
#define GPIO_OUT_PORTJP0_PIN01 PORTJ_AWOJP0_1
#define GPIO_OUT_PORTJP0_PIN02 PORTJ_AWOJP0_2
#define GPIO_OUT_PORTJP0_PIN03 PORTJ_AWOJP0_3
#define GPIO_OUT_PORTJP0_PIN04 PORTJ_AWOJP0_4
#define GPIO_OUT_PORTJP0_PIN05 PORTJ_AWOJP0_5

/* --- PORT  Data Input Value --- */
#define GPIO_IN_PORT00_PIN00 PORT_AWOPPR0_0
#define GPIO_IN_PORT00_PIN01 PORT_AWOPPR0_1
#define GPIO_IN_PORT00_PIN02 PORT_AWOPPR0_2
#define GPIO_IN_PORT00_PIN03 PORT_AWOPPR0_3
#define GPIO_IN_PORT00_PIN04 PORT_AWOPPR0_4
#define GPIO_IN_PORT00_PIN05 PORT_AWOPPR0_5
#define GPIO_IN_PORT00_PIN06 PORT_AWOPPR0_6
#define GPIO_IN_PORT00_PIN07 PORT_AWOPPR0_7
#define GPIO_IN_PORT00_PIN08 PORT_AWOPPR0_8
#define GPIO_IN_PORT00_PIN09 PORT_AWOPPR0_9

#define GPIO_IN_PORT01_PIN00 PORT_ISOPPR1_0
#define GPIO_IN_PORT01_PIN01 PORT_ISOPPR1_1
#define GPIO_IN_PORT01_PIN02 PORT_ISOPPR1_2
#define GPIO_IN_PORT01_PIN03 PORT_ISOPPR1_3
#define GPIO_IN_PORT01_PIN04 PORT_ISOPPR1_4
#define GPIO_IN_PORT01_PIN05 PORT_ISOPPR1_5

#define GPIO_IN_PORT03_PIN00 PORT_ISOPPR3_0
#define GPIO_IN_PORT03_PIN01 PORT_ISOPPR3_1
#define GPIO_IN_PORT03_PIN02 PORT_ISOPPR3_2
#define GPIO_IN_PORT03_PIN03 PORT_ISOPPR3_3
#define GPIO_IN_PORT03_PIN04 PORT_ISOPPR3_4
#define GPIO_IN_PORT03_PIN05 PORT_ISOPPR3_5
#define GPIO_IN_PORT03_PIN06 PORT_ISOPPR3_6
#define GPIO_IN_PORT03_PIN07 PORT_ISOPPR3_7
#define GPIO_IN_PORT03_PIN08 PORT_ISOPPR3_8
#define GPIO_IN_PORT03_PIN09 PORT_ISOPPR3_9

#define GPIO_IN_PORT10_PIN00 PORT_ISOPPR10_0
#define GPIO_IN_PORT10_PIN01 PORT_ISOPPR10_1
#define GPIO_IN_PORT10_PIN02 PORT_ISOPPR10_2
#define GPIO_IN_PORT10_PIN03 PORT_ISOPPR10_3
#define GPIO_IN_PORT10_PIN04 PORT_ISOPPR10_4
#define GPIO_IN_PORT10_PIN05 PORT_ISOPPR10_5
#define GPIO_IN_PORT10_PIN06 PORT_ISOPPR10_6
#define GPIO_IN_PORT10_PIN07 PORT_ISOPPR10_7
#define GPIO_IN_PORT10_PIN08 PORT_ISOPPR10_8
#define GPIO_IN_PORT10_PIN09 PORT_ISOPPR10_9
#define GPIO_IN_PORT10_PIN10 PORT_ISOPPR10_10
#define GPIO_IN_PORT10_PIN11 PORT_ISOPPR10_11

#define GPIO_IN_PORT11_PIN00 PORT_ISOPPR11_0
#define GPIO_IN_PORT11_PIN01 PORT_ISOPPR11_1
#define GPIO_IN_PORT11_PIN02 PORT_ISOPPR11_2
#define GPIO_IN_PORT11_PIN03 PORT_ISOPPR11_3

#define GPIO_IN_PORT16_PIN00 PORT_ISOPPR16_0
#define GPIO_IN_PORT16_PIN01 PORT_ISOPPR16_1
#define GPIO_IN_PORT16_PIN02 PORT_ISOPPR16_2
#define GPIO_IN_PORT16_PIN03 PORT_ISOPPR16_3
#define GPIO_IN_PORT16_PIN04 PORT_ISOPPR16_4
#define GPIO_IN_PORT16_PIN05 PORT_ISOPPR16_5
#define GPIO_IN_PORT16_PIN06 PORT_ISOPPR16_6
#define GPIO_IN_PORT16_PIN07 PORT_ISOPPR16_7
#define GPIO_IN_PORT16_PIN08 PORT_ISOPPR16_8
#define GPIO_IN_PORT16_PIN09 PORT_ISOPPR16_9
#define GPIO_IN_PORT16_PIN10 PORT_ISOPPR16_10
#define GPIO_IN_PORT16_PIN11 PORT_ISOPPR16_11

#define GPIO_IN_PORT17_PIN00 PORT_ISOPPR17_0
#define GPIO_IN_PORT17_PIN01 PORT_ISOPPR17_1
#define GPIO_IN_PORT17_PIN02 PORT_ISOPPR17_2
#define GPIO_IN_PORT17_PIN03 PORT_ISOPPR17_3
#define GPIO_IN_PORT17_PIN04 PORT_ISOPPR17_4
#define GPIO_IN_PORT17_PIN05 PORT_ISOPPR17_5
#define GPIO_IN_PORT17_PIN06 PORT_ISOPPR17_6
#define GPIO_IN_PORT17_PIN07 PORT_ISOPPR17_7
#define GPIO_IN_PORT17_PIN08 PORT_ISOPPR17_8
#define GPIO_IN_PORT17_PIN09 PORT_ISOPPR17_9
#define GPIO_IN_PORT17_PIN10 PORT_ISOPPR17_10
#define GPIO_IN_PORT17_PIN11 PORT_ISOPPR17_11

#define GPIO_IN_PORT21_PIN00 PORT_ISOPPR21_0
#define GPIO_IN_PORT21_PIN01 PORT_ISOPPR21_1
#define GPIO_IN_PORT21_PIN02 PORT_ISOPPR21_2
#define GPIO_IN_PORT21_PIN03 PORT_ISOPPR21_3
#define GPIO_IN_PORT21_PIN04 PORT_ISOPPR21_4
#define GPIO_IN_PORT21_PIN05 PORT_ISOPPR21_5
#define GPIO_IN_PORT21_PIN06 PORT_ISOPPR21_6
#define GPIO_IN_PORT21_PIN07 PORT_ISOPPR21_7
#define GPIO_IN_PORT21_PIN08 PORT_ISOPPR21_8
#define GPIO_IN_PORT21_PIN09 PORT_ISOPPR21_9

#define GPIO_IN_PORT22_PIN10 PORT_ISOPPR22_10

#define GPIO_IN_PORT42_PIN00 PORT_ISOPPR42_0
#define GPIO_IN_PORT42_PIN01 PORT_ISOPPR42_1
#define GPIO_IN_PORT42_PIN02 PORT_ISOPPR42_2
#define GPIO_IN_PORT42_PIN03 PORT_ISOPPR42_3
#define GPIO_IN_PORT42_PIN04 PORT_ISOPPR42_4
#define GPIO_IN_PORT42_PIN05 PORT_ISOPPR42_5
#define GPIO_IN_PORT42_PIN06 PORT_ISOPPR42_6
#define GPIO_IN_PORT42_PIN07 PORT_ISOPPR42_7
#define GPIO_IN_PORT42_PIN08 PORT_ISOPPR42_8
#define GPIO_IN_PORT42_PIN09 PORT_ISOPPR42_9
#define GPIO_IN_PORT42_PIN10 PORT_ISOPPR42_10
#define GPIO_IN_PORT42_PIN11 PORT_ISOPPR42_11
#define GPIO_IN_PORT42_PIN12 PORT_ISOPPR42_12
#define GPIO_IN_PORT42_PIN13 PORT_ISOPPR42_13
#define GPIO_IN_PORT42_PIN14 PORT_ISOPPR42_14
#define GPIO_IN_PORT42_PIN15 PORT_ISOPPR42_15

#define GPIO_IN_PORT43_PIN00 PORT_ISOPPR43_0
#define GPIO_IN_PORT43_PIN01 PORT_ISOPPR43_1

#define GPIO_IN_PORT44_PIN00 PORT_ISOPPR44_0
#define GPIO_IN_PORT44_PIN01 PORT_ISOPPR44_1
#define GPIO_IN_PORT44_PIN02 PORT_ISOPPR44_2
#define GPIO_IN_PORT44_PIN03 PORT_ISOPPR44_3
#define GPIO_IN_PORT44_PIN04 PORT_ISOPPR44_4
#define GPIO_IN_PORT44_PIN05 PORT_ISOPPR44_5
#define GPIO_IN_PORT44_PIN06 PORT_ISOPPR44_6
#define GPIO_IN_PORT44_PIN07 PORT_ISOPPR44_7
#define GPIO_IN_PORT44_PIN08 PORT_ISOPPR44_8
#define GPIO_IN_PORT44_PIN09 PORT_ISOPPR44_9
#define GPIO_IN_PORT44_PIN10 PORT_ISOPPR44_10
#define GPIO_IN_PORT44_PIN11 PORT_ISOPPR44_11

#define GPIO_IN_PORT45_PIN00 PORT_ISOPPR45_0
#define GPIO_IN_PORT45_PIN01 PORT_ISOPPR45_1
#define GPIO_IN_PORT45_PIN02 PORT_ISOPPR45_2
#define GPIO_IN_PORT45_PIN03 PORT_ISOPPR45_3
#define GPIO_IN_PORT45_PIN04 PORT_ISOPPR45_4
#define GPIO_IN_PORT45_PIN05 PORT_ISOPPR45_5
#define GPIO_IN_PORT45_PIN06 PORT_ISOPPR45_6
#define GPIO_IN_PORT45_PIN07 PORT_ISOPPR45_7
#define GPIO_IN_PORT45_PIN08 PORT_ISOPPR45_8
#define GPIO_IN_PORT45_PIN09 PORT_ISOPPR45_9
#define GPIO_IN_PORT45_PIN10 PORT_ISOPPR45_10
#define GPIO_IN_PORT45_PIN11 PORT_ISOPPR45_11
#define GPIO_IN_PORT45_PIN12 PORT_ISOPPR45_12
#define GPIO_IN_PORT45_PIN13 PORT_ISOPPR45_13

#define GPIO_IN_PORTJP0_PIN00 PORTJ_AWOJPPR0_0
#define GPIO_IN_PORTJP0_PIN01 PORTJ_AWOJPPR0_1
#define GPIO_IN_PORTJP0_PIN02 PORTJ_AWOJPPR0_2
#define GPIO_IN_PORTJP0_PIN03 PORTJ_AWOJPPR0_3
#define GPIO_IN_PORTJP0_PIN04 PORTJ_AWOJPPR0_4
#define GPIO_IN_PORTJP0_PIN05 PORTJ_AWOJPPR0_5


typedef enum
{
    GPIO_PORT_GROUP_0 = 0U,
    GPIO_PORT_GROUP_1 = 1U,
    GPIO_PORT_GROUP_3 = 3U,
    GPIO_PORT_GROUP_10 = 10U,
    GPIO_PORT_GROUP_11 = 11U,
    GPIO_PORT_GROUP_16 = 16U,
    GPIO_PORT_GROUP_17 = 17U,
    GPIO_PORT_GROUP_21 = 21U,
    GPIO_PORT_GROUP_22 = 22U,
    GPIO_PORT_GROUP_42 = 42U,
    GPIO_PORT_GROUP_43 = 43U,
    GPIO_PORT_GROUP_44 = 44U,
    GPIO_PORT_GROUP_45 = 45U,
    GPIO_PORT_GROUP_JP0 = 46U,
} GPIO_Port_en_t;
typedef enum
{
    GPIO_PIN_0 = 0X0U,
    GPIO_PIN_1,
    GPIO_PIN_2,
    GPIO_PIN_3,
    GPIO_PIN_4,
    GPIO_PIN_5,
    GPIO_PIN_6,
    GPIO_PIN_7,
    GPIO_PIN_8,
    GPIO_PIN_9,
    GPIO_PIN_10,
    GPIO_PIN_11,
    GPIO_PIN_12,
    GPIO_PIN_13,
    GPIO_PIN_14,
    GPIO_PIN_15,
} GPIO_PIN_en_t;

typedef enum
{
    GPIO_Input_Buf_Close = 0U,
    GPIO_Input_Buf_Open,
} GPIO_Buf_Control_en_t;

typedef enum
{
    GPIO_MODE_PORT = 0U,
    GPIO_MODE_ALTER_SOFTWARE,
    GPIO_MODE_ALTER_DIRECT,
} GPIO_Mode_en_t;

typedef enum
{
    GPIO_ALTER_FUN_1 = 0U,
    GPIO_ALTER_FUN_2,
    GPIO_ALTER_FUN_3,
    GPIO_ALTER_FUN_4,
    GPIO_ALTER_FUN_5,
    GPIO_ALTER_FUN_6,
} GPIO_Alter_Fuction_en_t;

typedef enum
{
    GPIO_DIR_OUT = 0U,
    GPIO_DIR_IN
} GPIO_Direction_en_t;
typedef enum
{
    GPIO_Level_Low = 0U,
    GPIO_Level_High,
} GPIO_Level_en_t;
typedef enum
{
    GPIO_PULL_NONE = 0U,
    GPIO_PULL_UP,
    GPIO_PULL_DOWN,
} GPIO_Pull_en_t;
typedef enum
{
    GPIO_Drive_Slow = 0U,
    GPIO_Drive_Fast,
} GPIO_Strength_en_t;
typedef enum
{
    GPIO_Char_TTL = 0U,
    GPIO_Char_CMOS1,
    GPIO_Char_Schmitt1,
    GPIO_Char_Schmitt4,
} GPIO_Characteristics_en_t;

typedef struct
{
    GPIO_Port_en_t enGPIOPort;
    GPIO_PIN_en_t enGPIOPIN;
    GPIO_Strength_en_t enGPIODrive;
    GPIO_Characteristics_en_t enGPIOCharacter;
    GPIO_Pull_en_t enGPIOPull;
    GPIO_Level_en_t enGPIOOutputValue;
    GPIO_Mode_en_t enGPIOMode;
    GPIO_Direction_en_t enGPIODir;
    GPIO_Alter_Fuction_en_t enGPIOAltFun;

} GPIO_Config_st_t;

typedef enum
{
    GPIO_WAKEUP_MODE = 0U,
    GPIO_SLEEP_MODE,

} GPIO_Config_Mode_en_t;

typedef enum
{
    GPIO_WAKEUP_PIN_P0_0 = 0X06U,
    GPIO_WAKEUP_PIN_P0_1 = 0X01U,
    GPIO_WAKEUP_PIN_P0_2 = 0X02U,
    GPIO_WAKEUP_PIN_P0_3 = 0X03U,
    GPIO_WAKEUP_PIN_P0_4 = 0X06U,
    GPIO_WAKEUP_PIN_P0_5 = 0X07U,
    GPIO_WAKEUP_PIN_P0_6 = 0X08U,
    GPIO_WAKEUP_PIN_P0_7 = 0X09U,
    GPIO_WAKEUP_PIN_P0_8 = 0X0AU,
    GPIO_WAKEUP_PIN_P0_9 = 0X0BU,

} GPIO_Wakeup_PIN_en_t;
typedef enum
{
    GPIO_WAKEUP_NONE = 0X0U,
    GPIO_WAKEUP_RISING_EDGE,
    GPIO_WAKEUP_FALLING_EDGE,
    GPIO_WAKEUP_BOTH_EDGE,
    GPIO_WAKEUP_LOW_LEVEL,
    GPIO_WAKEUP_HIGH_LEVEL,

} GPIO_Wakeup_Trigger_Mode_en_t;

/**/
extern void GPIO_Init(GPIO_Config_Mode_en_t enGPIOConfigMode);
extern void GPIO_Wakeup_PIN_Set(GPIO_Wakeup_PIN_en_t enGPIOWakeupPIN, GPIO_Wakeup_Trigger_Mode_en_t enGPIOTrigger);
extern void GPIO_Config(GPIO_Config_st_t *pstGPIOConfig);

#endif