package Ġcom . mq gateway . core . hardware . pi 4 j Ċ Ċ import Ġcom . mq gateway . core . gateway config . Wire Color Ċ import Ġcom . mq gateway . core . hardware . Mq Expand er Pin Provider Ċ import Ġcom . mq gateway . core . hardware . Mq Gpio Pin Digital Input Ċ import Ġcom . mq gateway . core . hardware . Mq Gpio Pin Digital Output Ċ import Ġcom . mq gateway . core . hardware . Mq Gpio Provider Ċ import Ġcom . mq gateway . core . hardware . Mq M cp Expand ers Ċ import Ġcom . mq gateway . core . hardware . Mq Pin Ċ import Ġcom . pi 4 j . gpio . extension . m cp . M CP 2 3 0 1 7 Gpio Provider Ċ import Ġcom . pi 4 j . gpio . extension . m cp . M CP 2 3 0 1 7 Pin Ċ import Ġcom . pi 4 j . io . gpio . Pin Pull Res istance Ċ import Ġcom . pi 4 j . io . gpio . Pin State Ċ Ċ /** Ċ Ġ* ĠInitializes Ġcollection Ġof ĠM CP 2 3 0 1 7 Ġexpand ers Ġbased Ġon Ġgiven Ġbus Ġnumber Ġand Ġaddresses Ġin ĠI 2 c Ġbus Ċ Ġ* Ċ Ġ* Ġ@ param Ġi 2 CB us Number Ġsee Ġconstants Ġin Ġcom . pi 4 j . io . i 2 c . I 2 CB us Ċ Ġ* Ġ@ param Ġexpand er Addresses Ġlist Ġof ĠM CP 2 3 0 1 7 Ġexpand ers ĠORDER ED Ġin Ġthe Ġsame Ġway Ġthey Ġare Ġconnected Ġwith Ġports Ċ Ġ*/ Ċ class ĠPi 4 JM cp Expand ers ( i 2 CB us Number : ĠInt , Ġexpand er Addresses : ĠList < Int >) Ġ: ĠM q M cp Expand ers Ġ{ ĊĊĠ Ġprivate Ġval Ġexpand ers : ĠList < Mq Gpio Provider > Ġ= Ġexpand er Addresses . map Ġ{ ĠPi 4 JM cp 2 3 0 1 7 Gpio Provider ( M CP 2 3 0 1 7 Gpio Provider ( i 2 CB us Number , Ġit )) Ġ} ĊĊĠ Ġoverride Ġfun ĠgetBy Port ( port Number : ĠInt ) Ġ= Ġexpand ers [( port Number Ġ- Ġ 1 ) Ġ/ Ġ 4 ] Ċ } Ċ Ċ class ĠPi 4 JM cp 2 3 0 1 7 Gpio Provider ( m cp 2 3 0 1 7 Gpio Provider : ĠM CP 2 3 0 1 7 Gpio Provider ) Ġ: ĠPi 4 J Gpio Provider ( m cp 2 3 0 1 7 Gpio Provider ) Ċ Ċ class ĠPi 4 J Expand er Pin Provider ( ĊĠ Ġprivate Ġval Ġgpio : ĠPi 4 J Gpio Controller , ĊĠ Ġprivate Ġval Ġm cp Expand ers : ĠM q M cp Expand ers Ċ ) Ġ: ĠM q Expand er Pin Provider Ġ{ ĊĊĠ Ġoverride Ġfun Ġpin Digital Output ( port Number : ĠInt , Ġwire Color : ĠWire Color , Ġname : ĠString , Ġdefault State : ĠPin State ): ĠM q Gpio Pin Digital Output Ġ{ ĊĠĠĠ Ġreturn ĠPi 4 J Gpio Pin Digital Output ( ĊĠĠĠĠĠ Ġgpio . provision Digital Output Pin ( ĊĠĠĠĠĠĠĠ Ġm cp Expand ers . getBy Port ( port Number ), ĊĠĠĠĠĠĠĠ Ġpin On M cp ( port Number , Ġwire Color ), ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġdefault State ĊĠĠĠĠĠ Ġ). get Pi 4 J () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpin Digital Input ( port Number : ĠInt , Ġwire Color : ĠWire Color , Ġname : ĠString , Ġresistance : ĠPin Pull Res istance ): ĠM q Gpio Pin Digital Input Ġ{ ĊĠĠĠ Ġreturn ĠPi 4 J Gpio Pin Digital Input ( ĊĠĠĠĠĠ Ġgpio . provision Digital Input Pin ( ĊĠĠĠĠĠĠĠ Ġm cp Expand ers . getBy Port ( port Number ), ĊĠĠĠĠĠĠĠ Ġpin On M cp ( port Number , Ġwire Color ), ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġresistance ĊĠĠĠĠĠ Ġ). get Pi 4 J () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpin On M cp ( port Number : ĠInt , Ġwire Color : ĠWire Color ): ĠM q Pin Ġ{ ĊĠĠĠ Ġval Ġexpand er Pin Number Ġ= Ġ(( port Number Ġ- Ġ 1 ) Ġ% Ġ 4 ) Ġ* Ġ 4 Ġ+ Ġ( wire Color . number Ġ- Ġ 3 ) ĊĠĠĠ Ġreturn Ġwhen Ġ( expand er Pin Number ) Ġ{ ĊĠĠĠĠĠĠ 0 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 0 ) ĊĠĠĠĠĠĠ 1 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 1 ) ĊĠĠĠĠĠĠ 2 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 2 ) ĊĠĠĠĠĠĠ 3 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 3 ) ĊĠĠĠĠĠĠ 4 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 4 ) ĊĠĠĠĠĠĠ 5 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 5 ) ĊĠĠĠĠĠĠ 6 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 6 ) ĊĠĠĠĠĠĠ 7 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ A 7 ) ĊĠĠĠĠĠĠ 8 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 0 ) ĊĠĠĠĠĠĠ 9 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 1 ) ĊĠĠĠĠĠĠ 1 0 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 2 ) ĊĠĠĠĠĠĠ 1 1 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 3 ) ĊĠĠĠĠĠĠ 1 2 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 4 ) ĊĠĠĠĠĠĠ 1 3 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 5 ) ĊĠĠĠĠĠĠ 1 4 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 6 ) ĊĠĠĠĠĠĠ 1 5 Ġ-> ĠPi 4 J Pin ( M CP 2 3 0 1 7 Pin . GPIO _ B 7 ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Wrong Ġport Ġnumber Ġor Ġwire Color . ĠCalcul ated Ġexpand er Pin Number Ġcannot Ġbe Ġoutside Ġof Ġ[ 0 , 1 5 ] Ġrange .") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ