/* Ċ Ġ* ĠContext . kt Ċ Ġ* ĠJ NA Ġimplementation Ġof ĠPC / SC ĠAPI Ġenum er ations Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠMichael ĠFar re ll Ġ< m ico lo us + git @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġau . id . m ico lo us . kotlin . pc sc Ċ Ċ import Ġau . id . m ico lo us . kotlin . pc sc . j na . D word Ċ import Ġcom . sun . j na . Platform Ċ Ċ actual Ġenum Ġclass ĠScope ( private Ġval Ġl : ĠLong ) Ġ{ ĊĠĠĠ ĠUser ( 0 ), ĊĠĠĠ ĠTerminal ( 1 ), ĊĠĠĠ ĠSystem ( 2 ); ĊĊĠĠĠ Ġinternal Ġval Ġv Ġ= ĠD word ( l ) Ċ } Ċ Ċ actual Ġenum Ġclass ĠShare Mode ( private Ġval Ġl : ĠLong ) Ġ{ ĊĠĠĠ ĠShared ( 2 ), ĊĠĠĠ ĠEx clusive ( 1 ), ĊĠĠĠ ĠDirect ( 3 ); ĊĊĠĠĠ Ġinternal Ġval Ġv Ġ= ĠD word ( l ) Ċ } Ċ Ċ actual Ġenum Ġclass ĠProtocol ( internal Ġval Ġv : ĠLong ) Ġ{ ĊĠĠĠ ĠUn set ( 0 ), ĊĠĠĠ ĠT 0 ( 1 ), ĊĠĠĠ ĠT 1 ( 2 ), ĊĠĠĠ ĠAny ( T 0 . v Ġor ĠT 1 . v ), ĊĠĠĠ ĠT 1 5 ( 0 x 8 ), Ġ// Ġnot Ġsupported Ġon ĠWindows ĊĠĠĠ ĠRaw ( if Ġ( Platform . is Windows ()) Ġ{ Ġ 0 x 1 0 0 0 0 Ġ} Ġelse Ġ{ Ġ 0 x 4 Ġ}), ĊĠĠĠ ĠUndefined ( 0 ); Ċ } Ċ Ċ internal Ġfun ĠLong . to Protocol (): ĠProtocol ? Ġ{ ĊĠĠĠ Ġreturn ĠProtocol . values (). find Ġ{ Ġit . v Ġ== Ġthis Ġ} Ċ } Ċ Ċ internal Ġfun ĠSet < Protocol >. to Long (): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . v Ġ}. reduce Ġ{ Ġacc , Ġit Ġ-> Ġacc Ġor Ġit Ġ} Ċ } Ċ Ċ actual Ġenum Ġclass ĠDis connect Disposition ( private Ġval Ġl : ĠLong ) Ġ{ ĊĠĠĠ ĠLeave ( 0 ), ĊĠĠĠ ĠReset ( 1 ), ĊĠĠĠ ĠUn power ( 2 ), ĊĠĠĠ ĠE ject ( 3 ); ĊĊĠĠĠ Ġinternal Ġval Ġv Ġ= ĠD word ( l ) Ċ } Ċ Ċ actual Ġenum Ġclass ĠInitialization ( private Ġval Ġl : ĠLong ) Ġ{ ĊĠĠĠ ĠLeave ( 0 ), ĊĠĠĠ ĠReset ( 1 ), ĊĠĠĠ ĠUn power ( 2 ); ĊĊĠĠĠ Ġinternal Ġval Ġv Ġ= ĠD word ( l ) Ċ } Ċ Ċ internal Ġval ĠSC ARD _ UNKNOWN Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 0 L Ġelse Ġ 0 x 0 0 0 1 L Ċ internal Ġval ĠSC ARD _ AB SENT Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 1 L Ġelse Ġ 0 x 0 0 0 2 L Ċ internal Ġval ĠSC ARD _ PRESENT Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 2 L Ġelse Ġ 0 x 0 0 0 4 L Ċ internal Ġval ĠSC ARD _ SW ALLOWED Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 3 L Ġelse Ġ 0 x 0 0 0 8 L Ċ internal Ġval ĠSC ARD _ POWER ED Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 4 L Ġelse Ġ 0 x 0 0 1 0 L Ċ internal Ġval ĠSC ARD _ NEG OT I ABLE Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 5 L Ġelse Ġ 0 x 0 0 2 0 L Ċ internal Ġval ĠSC ARD _ SPEC IFIC Ġ= Ġif Ġ( Platform . is Windows ()) Ġ 6 L Ġelse Ġ 0 x 0 0 4 0 L Ċ