/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . ul . ims . g mdl . offline Transfer Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . ul . ims . g mdl . cb or data . security . Co se Key Ċ import Ġcom . ul . ims . g mdl . offline transfer . config . App Mode Ċ import Ġcom . ul . ims . g mdl . offline transfer . config . B le Service Mode Ċ import Ġcom . ul . ims . g mdl . offline transfer . data . DataTypes Ċ import Ġcom . ul . ims . g mdl . offline transfer . transport Layer . Transfer Channels Ċ Ċ class ĠOff line Transfer Manager Ġ{ ĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcontext Ġ: ĠContext ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġact As Ġ: ĠApp Mode ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠDefault Ġdata Ġtype Ġis ĠCB OR ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠdataType Ġ: ĠDataTypes Ġ= ĠDataTypes . CB OR ĊĠĠĠĠĠĠĠ Ġ// ĠDefault Ġtransfer Ġmethod Ġis ĠBLE ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtransfer Channel : ĠTransfer Channels Ġ= ĠTransfer Channels . BLE ĊĠĠĠĠĠĠĠ Ġ// ĠSo Ġfar Ġthe Ġsupported Ġmode Ġis Ġonly Ġm DL ĠCentral ĠClient ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġble Service Mode : ĠB le Service Mode ? Ġ= ĠB le Service Mode . PER IP HER AL _ SERVER _ MODE ĊĠĠĠĠĠĠĠ Ġ// ĠW ifi Ġpassphrase Ġis Ġonly Ġset Ġon ĠN FC Ġeng agement ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġwifi Pass phrase : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// Ġco se Key ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġco se Key : ĠC ose Key ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Co se Key ( co se Key : ĠC ose Key ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . co se Key Ġ= Ġco se Key ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Transfer Channel ( transfer Channel : ĠTransfer Channels ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transfer Channel Ġ= Ġtransfer Channel ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset DataType ( dataType : ĠDataTypes ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dataType Ġ= ĠdataType ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Context ( context Ġ: ĠContext ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġact As ( act As Ġ: ĠApp Mode ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . act As Ġ= Ġact As ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset B le Service Mode ( ble Service Mode Ġ: ĠB le Service Mode ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ble Service Mode Ġ= Ġble Service Mode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ: ĠC bor Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact As ?. let Ġ{ Ġactor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġble Service Mode ?. let Ġ{ ble Mode -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġco se Key ?. let Ġ{ ck Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDataTypes . CB OR Ġ-> ĠC bor Manager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Channel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġble Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġck . get PublicKey (). encoded , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Pass phrase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Mandatory Ġfields Ġnot Ġset ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Mandatory Ġfields Ġnot Ġset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Wifi Pass phrase ( wifi Pass phrase : ĠString ?) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . wifi Pass phrase Ġ= Ġwifi Pass phrase ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }