Configuration module
Call flow
Setup
Create an instance and connect the app to the terminal by getControllerInstance() and connectController().
The app shall be notified by onError if there's any errors occurred.
abstract class ApolloConfiguration(private val context: Context) : ConfigurationDelegate {
private var configurationController: ConfigurationController? = null
fun connect(): Boolean {
try {
if (configurationController == null) {
// get instance
configurationController = getControllerInstance(context, this)
// enable debug log display in console
SPDeviceController.enableDebugLog(true)
}
// establish the communication channel with terminal
configurationController?.connectController()
} catch (ex: Exception) {
return false
}
return true
}
fun disconnect() {
configurationController?.disconnectController()
configurationController?.releaseControllerInstance()
}
override fun onError(errorType: ControllerError.Error?, message: String?) {
// handle error here
}
}
Getting terminal info & parameters
Get terminal info
// getting infos
fun getDeviceInfo() {
configurationController?.getDeviceInfo()
}
override fun onDeviceInfoReceived(p0: Hashtable<String, String>?) {
// p0: terminal info
// {isSupportedTrack2=true, isSupportedTrack1=true, firmwareVersion=1.00.9, hardwareVersion=msm8909, vendorID=1234567, isCharging=true, batteryPercentage=99, serialNumber=1234567, isSupportedNfc=true, isUsbConnected=false, productID=A10, bID=APOLLO, isSupportedTrack3=true, batteryLevel=99}
}
Get AID
// getting aids
fun getAllAid(isContactLess: Boolean) {
configurationController?.getAllAid(isContactLess)
}
override fun onAllAidReceived(p0: Hashtable<String, String>?) {
// p0: All AIDs received
// {03=A00000002501, 02=A0000003330101, 01=A0000000041010, 00=A0000000031010, 04=A0000000651010}
}
fun getAidInfo(isContactLess: Boolean, index: String) {
configurationController?.getAidInfo(isContactLess, index)
}
override fun onAidInfoReceived(p0: Hashtable<String, Any>?) {
// p0: received AID
// {eRSBMax=63, contactlessTACDenial=0000000000, transCurrencyCode=0344, defaultTDOL=9F02069F0306, aid=A0000000031010, terminalCountryCode=0344, terminalCapabilities=0000C8, contactlessFloorLimit=000000050001, appIndex=00, eRSTarget=00, eRSBThresh=000000005000, contactlessTransactionLimit=000000050001, contactlessTACOnline=0000000000, contactlessCVMRequiredLimit=000000050001, eType=82, appVersion=0002, eBitField=02, defaultDDOL=9F3704, additTermCapabilities=6000F02001, contactlessTACDefault=0000000000}
}
Get CAPK
// getting capks
fun getAllCapk(isContactLess: Boolean) {
configurationController?.getAllCapk(isContactLess)
}
override fun onAllCapkReceived(p0: MutableList<CAPK>?) {
// p0: All CAPKs received
// [com.spectratech.controllers.CAPK@a4f610, ...]
}
fun getCapkInfo(isContactLess: Boolean, index: String) {
configurationController?.getCapkInfo(isContactLess, index)
}
override fun onCapkInfoReceived(p0: CAPK?) {
// p0: CAPK received
// CAPK(location=, rid=A000000003, index=89, exponent=03, modulus=..., checksum=, size=C0, expirydate=1225, effectdate=0115)
}
Update AIDs
// updating AID
fun updateAID(isContactLess: Boolean, aid: Hashtable<String, String>) {
aid["action"] = "update"
configurationController?.updateAid(isContactLess, aid)
}
override fun onAidUpdated(p0: Hashtable<String, ConfigurationStatus>?) {
// p0: aid update result
// {eRSBMax=SUCCESS, terminalType=SUCCESS, transCurrencyCode=SUCCESS, defaultTDOL=SUCCESS, aid=SUCCESS, terminalCountryCode=SUCCESS, terminalFloorLimit=SUCCESS, terminalCapabilities=SUCCESS, contactTACDefault=SUCCESS, contactTACDenial=SUCCESS, eRSTarget=SUCCESS, eRSBThresh=SUCCESS, action=SUCCESS, contactTACOnline=SUCCESS, eType=SUCCESS, appVersion=SUCCESS, eBitField=SUCCESS, defaultDDOL=SUCCESS, additTermCapabilities=SUCCESS}
}
Update CAPKs
// updating CAPK
fun updateCapk(isContactLess: Boolean, capk: CAPK) {
configurationController?.updateCapk(isContactLess, capk)
}
override fun onCapkUpdated(p0: Boolean) {
// p0: update result
// true | false
}