Package com.creditcall.chipdnamobile

# Class ChipDnaMobile

java.lang.Object
com.creditcall.chipdnamobile.ChipDnaMobile

public class ChipDnaMobile extends Object
This class should be used for processing Card Present sale and refund transactions on a mobile device. It also provides the necessary functionality for refunding a sale transaction, and sending email and SMS receipts.

`connectAndConfigure(Parameters)`, `startTransaction(Parameters)`, `linkedRefundTransaction(Parameters)`, `getCardDetails(Parameters)` , `confirmTransaction(Parameters)` and `voidTransaction(Parameters)` cannot be executed simultaneously, the operation that they perform needs to be finished before any of the other methods is executed. The method `dispose(Parameters)` cannot be used when the above operations are taking place. Otherwise `AnotherOperationBeingProcessed` error is returned.

Author:
  Creditcall Ltd

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ChipDnaMobile()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addApplicationSelectionListener(IApplicationSelectionListener listener)`
  Add a listener to know when card application selection is required after a call to `startTransaction(Parameters)`.
  `void`
  `addAvailablePinPadsListener(IAvailablePinPadsListener listener)`
  Add a listener to get events when calling method `getAvailablePinPads(Parameters)`.
  `void`
  `addCardDetailsListener(ICardDetailsListener listener)`
  Add a listener to get results when calling method `getAvailableCurrencies(Parameters)`.
  `void`
  `addConfigurationUpdateListener(IConfigurationUpdateListener listener)`
  Add a listener to get events about device configuration.
  `void`
  `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener listener)`
  Add a listener to get events when method `connectAndConfigure(Parameters)` has completed.
  `void`
  `addDeferredAuthorizationListener(IDeferredAuthorizationListener listener)`
  Add a listener to get the event for deferred authorization confirmation.
  `void`
  `addDeviceUpdateListener(IDeviceUpdateListener listener)`
  Add a listener to get events about device connectivity.
  `void`
  `addFirmwareUpdateListener(IFirmwareUpdateListener listener)`
  Add a listener to get the event for Firmware Updates.
  `void`
  `addForceAcceptanceListener(IForceAcceptanceListener listener)`
  Add a listener to get the event for forced acceptance confirmation.
  `void`
  `addPartialApprovalListener(IPartialApprovalListener listener)`
  Add a listener to get the event for partial approval confirmation.
  `void`
  `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener listener)`
  Add a listener to get results when calling method `processReceipt(Parameters)`.
  `void`
  `addRequestActivityListener(IRequestActivityListener listener)`
  Add a listener to know when current activity is required after a call to `startTransaction(Parameters)`.
  `void`
  `addSignatureCaptureListener(ISignatureCaptureListener listener)`
  Add a listener to get the event for signature capture.
  `void`
  `addSignatureVerificationListener(ISignatureVerificationListener listener)`
  Add a listener to get the event for signature verification.
  `void`
  `addTmsUpdateListener(ITmsUpdateListener listener)`
  Add a listener to get results when calling method `requestTmsUpdate(Parameters)`.
  `void`
  `addTransactionFinishedListener(ITransactionFinishedListener listener)`
  Add a listener to get the results of a transaction.
  `void`
  `addTransactionUpdateListener(ITransactionUpdateListener listener)`
  Add a listener to get events during a transaction.
  `void`
  `addUserNotificationListener(IUserNotificationListener listener)`
  Add a listener to receive updates on notifications which need to be shown to the customer after a call to `startTransaction(Parameters)`.
  `void`
  `addVerifyIdListener(IVerifyIdListener listener)`
  Add a listener to get the event for ID verification.
  `void`
  `addVoiceReferralListener(IVoiceReferralListener listener)`
  Add a listener to get the event for voice referral.
  `void`
  `clearAllApplicationSelectionListener()`
  Remove all listeners that were added via `addApplicationSelectionListener(IApplicationSelectionListener)`
  `void`
  `clearAllAvailablePinPadsListeners()`
  Remove all listeners that were added via `addAvailablePinPadsListener(IAvailablePinPadsListener)`.
  `void`
  `clearAllCardDetailsListener()`
  Remove all listeners that were added via `addCardDetailsListener(ICardDetailsListener)`
  `void`
  `clearAllConfigurationUpdateListeners()`
  Remove all listeners that were added via `addConfigurationUpdateListener(IConfigurationUpdateListener)`
  `void`
  `clearAllConnectAndConfigureFinishedListeners()`
  Remove all listeners that were added via `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)`.
  `void`
  `clearAllDeferredAuthorizationListener()`
  Remove all listeners that were added via `addDeferredAuthorizationListener(IDeferredAuthorizationListener)`
  `void`
  `clearAllDeviceUpdateListeners()`
  Remove all listeners that were added via `addDeviceUpdateListener(IDeviceUpdateListener)`
  `void`
  `clearAllFirmwareUpdateListeners()`
  Remove all listeners that were added via `addFirmwareUpdateListener(IFirmwareUpdateListener)`
  `void`
  `clearAllForceAcceptanceListener()`
  Remove all listeners that were added via `addForceAcceptanceListener(IForceAcceptanceListener)`
  `void`
  `clearAllPartialApprovalListener()`
  Remove all listeners that were added via `addPartialApprovalListener(IPartialApprovalListener)`
  `void`
  `clearAllProcessReceiptFinishedListener()`
  Remove all listeners that were added via `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener)`
  `void`
  `clearAllRequestActivityListener()`
  Remove all listeners that were added via `addRequestActivityListener(IRequestActivityListener)`
  `void`
  `clearAllSignatureCaptureListeners()`
  Remove all listeners that were added via `addSignatureCaptureListener(ISignatureCaptureListener)`
  `void`
  `clearAllSignatureVerificationListener()`
  Remove all listeners that were added via `addSignatureVerificationListener(ISignatureVerificationListener)`
  `void`
  `clearAllTmsUpdateListener()`
  Remove all listeners that were added via `addTmsUpdateListener(ITmsUpdateListener)`
  `void`
  `clearAllTransactionFinishedListener()`
  Remove all listeners that were added via `addTransactionFinishedListener(ITransactionFinishedListener)`
  `void`
  `clearAllTransactionUpdateListener()`
  Remove all listeners that were added via `addTransactionUpdateListener(ITransactionUpdateListener)`
  `void`
  `clearAllUserNotificationListener()`
  Remove all listeners that were added via `addUserNotificationListener(IUserNotificationListener)`
  `void`
  `clearAllVerifyIdListener()`
  Remove all listeners that were added via `addVerifyIdListener(IVerifyIdListener)`
  `void`
  `clearAllVoiceReferralListeners()`
  Remove all listeners that were added via `addVoiceReferralListener(IVoiceReferralListener)`
  `Parameters`
  `confirmTransaction(Parameters requestParameters)`
  Finalizes a transaction after it has been approved so that the transaction will be settled.
  `Parameters`
  `connectAndConfigure(Parameters requestParameters)`
  Connect to and configure the current device.
  `Parameters`
  `continueApplicationSelection(Parameters requestParameters)`
  Continue transaction currently waiting for card application selection response.
  `Parameters`
  `continueDeferredAuthorization(Parameters requestParameters)`
  Continue transaction currently waiting for deferred authorisation response.
  `Parameters`
  `continueForceAcceptance(Parameters requestParameters)`
  Continue transaction currently waiting for forced acceptance response.
  `Parameters`
  `continueIdVerification(Parameters requestParameters)`
  Continue transaction currently waiting for ID verification response.
  `Parameters`
  `continuePartialApproval(Parameters requestParameters)`
  Continue transaction currently waiting for parital approval response.
  `Parameters`
  `continueRequestedActivity(android.app.Activity activity)`
  Continue transaction currently waiting for activity response.
  `Parameters`
  `continueSignatureCapture(Parameters requestParameters)`
  Continue transaction currently waiting for signature capture.
  `Parameters`
  `continueSignatureVerification(Parameters requestParameters)`
  Continue transaction currently waiting for signature verification.
  `Parameters`
  `continueVoiceReferral(Parameters requestParameters)`
  Continue transaction currently waiting for voice referral response.
  `Parameters`
  `deleteFailedOfflineRequest(Parameters requestParameters)`
  Delete a transaction which has been moved to the failed offline queue.
  `Parameters`
  `disconnect(Parameters requestParameters)`
  Disconnects the currently connected PINpad.
  `static Parameters`
  `dispose(Parameters request)`
  Disposes of ChipDnaMobile.
  `Parameters`
  `getAvailableCurrencies(Parameters requestParameters)`
  Retrieve the available currencies for currently configured terminal.
  `Parameters`
  `getAvailablePinPads(Parameters requestParameters)`
  Search for PIN pads paired (Bluetooth & Bluetooth Low Energy) and/or connected (USB) to the Android device.
  `Parameters`
  `getCardDetails(Parameters requestParameters)`
  Acquire card details without performing a transaction.
  `static ChipDnaMobile`
  `getInstance()`
  Gets the instance of ChipDnaMobile.
  `Parameters`
  `getMerchantData(Parameters requestParameters)`
  Get all merchant data in a single call.
  `static String`
  `getSoftwareName()`
  Gets the software name.
  `static String`
  `getSoftwareVersion()`
  Gets the software version.
  `static String`
  `getSoftwareVersionName()`
  Get the software version name.
  `Parameters`
  `getStatus(Parameters requestParameters)`
  Check the current status of different components of ChipDNA Mobile in a single call.
  `Parameters`
  `getTransactionInformation(Parameters requestParameters)`
  Get information stored about a transaction.
  `static Parameters`
  `initialize(android.content.Context applicationContext, Parameters parameters)`
  Initializes ChipDnaMobile.
  `static boolean`
  `isInitialized()`
  Returns whether ChipDnaMobile has been initialized.
  `Parameters`
  `linkedRefundTransaction(Parameters requestParameters)`
  Start a linked refund transaction to refund part or all of a previously online approved transaction.
  `Parameters`
  `processReceipt(Parameters requestParameters)`
  Send receipts via email or SMS using the Creditcall platform.
  `void`
  `removeApplicationSelectionListener(IApplicationSelectionListener listener)`
  Remove a listener currently listening for card application selection.
  `void`
  `removeAvailablePinPadsListener(IAvailablePinPadsListener listener)`
  Remove a listener that was previously added via `addAvailablePinPadsListener(IAvailablePinPadsListener)`.
  `void`
  `removeCardDetailsListener(ICardDetailsListener listener)`
  Remove a listener that was previously added via `addCardDetailsListener(ICardDetailsListener)` .
  `void`
  `removeConfigurationUpdateListener(IConfigurationUpdateListener listener)`
  Remove a listener that was previously added via `addConfigurationUpdateListener(IConfigurationUpdateListener)` .
  `void`
  `removeConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener listener)`
  Remove a listener that was previously added via `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)`.
  `void`
  `removeDeferredAuthorizationListener(IDeferredAuthorizationListener listener)`
  Remove a listener that was previously added via `addDeferredAuthorizationListener(IDeferredAuthorizationListener)` .
  `void`
  `removeDeviceUpdateListener(IDeviceUpdateListener listener)`
  Remove a listener that was previously added via `addDeviceUpdateListener(IDeviceUpdateListener)` .
  `void`
  `removeFirmwareUpdateListener(IFirmwareUpdateListener listener)`
  Remove a listener that was previously added via `addFirmwareUpdateListener(IFirmwareUpdateListener)` .
  `void`
  `removeForceAcceptanceListener(IForceAcceptanceListener listener)`
  Remove a listener that was previously added via `addForceAcceptanceListener(IForceAcceptanceListener)` .
  `void`
  `removePartialApprovalListener(IPartialApprovalListener listener)`
  Remove a listener that was previously added via `addPartialApprovalListener(IPartialApprovalListener)` .
  `void`
  `removeProcessReceiptFinishedListener(IProcessReceiptFinishedListener listener)`
  Remove a listener that was previously added via `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener)` .
  `void`
  `removeRequestActivityListener(IRequestActivityListener listener)`
  Remove a listener currently listening for activity being requested for transaction.
  `void`
  `removeSignatureCaptureListener(ISignatureCaptureListener listener)`
  Remove a listener that was previously added via `addSignatureCaptureListener(ISignatureCaptureListener)` .
  `void`
  `removeSignatureVerificationListener(ISignatureVerificationListener listener)`
  Remove a listener that was previously added via `addSignatureVerificationListener(ISignatureVerificationListener)` .
  `void`
  `removeTmsUpdateListener(ITmsUpdateListener listener)`
  Remove a listener that was previously added via `addTmsUpdateListener(ITmsUpdateListener)` .
  `void`
  `removeTransactionFinishedListener(ITransactionFinishedListener listener)`
  Remove a listener that was previously added via `addTransactionFinishedListener(ITransactionFinishedListener)`.
  `void`
  `removeTransactionUpdateListener(ITransactionUpdateListener listener)`
  Remove a listener that was previously added via `addTransactionUpdateListener(ITransactionUpdateListener)` .
  `void`
  `removeUserNotificationListener(IUserNotificationListener listener)`
  Remove a listener currently listening for user notifications.
  `void`
  `removeVerifyIdListener(IVerifyIdListener listener)`
  Remove a listener that was previously added via `addVerifyIdListener(IVerifyIdListener)` .
  `void`
  `removeVoiceReferralListener(IVoiceReferralListener listener)`
  Remove a listener that was previously added via `addVoiceReferralListener(IVoiceReferralListener)` .
  `Parameters`
  `requestTmsUpdate(Parameters requestParameters)`
  Forces an update using the TMS server.
  `Parameters`
  `retryFailedOfflineRequest(Parameters requestParameters)`
  Retry a transaction which has been moved to the failed offline queue.
  `Parameters`
  `setIdleMessage(Parameters requestParameters)`
  Display text on the PIN pad for a given amount of time at which point the PIN pad will return to idle.
  `Parameters`
  `setProperties(Parameters requestParameters)`
  Set properties required to configured ChipDNA Mobile.
  `Parameters`
  `startTransaction(Parameters requestParameters)`
  Start a transaction.
  `Parameters`
  `terminateTransaction(Parameters requestParameters)`
  Terminate the currently processing transaction.
  `Parameters`
  `voidTransaction(Parameters requestParameters)`
  Void a previously approved but uncommited transaction.

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ChipDnaMobile

    public ChipDnaMobile()

- ## Method Details

  - ### setProperties

    public Parameters setProperties(Parameters requestParameters)
    Set properties required to configured ChipDNA Mobile.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.TerminalId` Set the terminal ID.

      `ParameterKeys.TransactionKey` Set the transaction key.

      `ParameterKeys.ApiKey` Set the Api Key for the payment gateway.

      `ParameterKeys.ApplicationIdentifier` Set Application Identifier.

      `ParameterKeys.Environment` Set the environment to `LIVE` or `STAGING`.

      `ParameterKeys.PinPadName` Set the PIN pad name retrieved using `getAvailablePinPads(Parameters)`.

      `CCParamPinPadConnectionType` Set the connection type of the PIN pad. Valid values are `ParameterValues.BluetoothConnectionType`, `ParameterValues.BluetoothLeConnectionType` or `ParameterValues.UsbConnectionType`.

      `ParameterKeys.WebMisUsername` Set WebMIS username for environment specified in `ParameterKeys.Environment`.

      `ParameterKeys.WebMisPassword` Set WebMIS password for environment specified in `ParameterKeys.Environment`.

      `ParameterKeys.CertificateFingerprint` Set the certificate fingerprint.

      `ParameterKeys.ClientId` Set the client ID for TapToMobile.

      `ParameterKeys.ClientSecret` Set the client secret for TapToMobile.

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### getAvailablePinPads

    public Parameters getAvailablePinPads(Parameters requestParameters)
    Search for PIN pads paired (Bluetooth & Bluetooth Low Energy) and/or connected (USB) to the Android device. Register listener using `addAvailablePinPadsListener(IAvailablePinPadsListener)` to get search results reported via `IAvailablePinPadsListener.onAvailablePinPads(Parameters)`.

    Supported Pin pads are BBPOS Chipper 2X BT, BBPOS Chipper 30 BT, Datecs Bluepad50, Miura M020, Miura M021 and IDTech VP3350.

    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.SearchConnectionTypeBluetooth` - (Optional) Search for bluetooth PINpads.

      `ParameterKeys.SearchConnectionTypeBluetoothLe` - (Optional) Search for bluetooth low energy PINpads.

      `ParameterKeys.SearchConnectionTypeUsb` - (Optional) Search for USB PINpads.

      `ParameterKeys.SearchOnlyOnlineBluetoothLePinPads` - (Optional) Search for only online bluetooth low energy PINpads. This is currently only supported on IDTech VP3350 devices

      If no parameter is specified, ChipDna Mobile will search for bluetooth pinpads only

      `ParameterKeys.BLEScanTime` - (Optional) Set the length of time to scan for Bluetooth Low Energy (BLE) devices. The value must be a string valued number between 1 and 30. The default value of 5 seconds will be used if this value is not available.

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### requestTmsUpdate

    public Parameters requestTmsUpdate(Parameters requestParameters)
    Forces an update using the TMS server. This checks whether the current version of ChipDnaMobile is valid to use, whether the Terminal ID is disabled and downloads the settings configured on the TMS server. The result of a TMS update is returned to observers registered using `addTmsUpdateListener(ITmsUpdateListener)`
    Parameters:
      `requestParameters` - Parameter collection which can contain the following:

      `ParameterKeys.FullTmsUpdate` Forces a full TMS update. All configuration for the currently connected PIN pad is downloaded regardless of whether it's required.

      `ParameterKeys.ApplyFirmwareUpdate` (Only supported on VP3350) When present with the value `ParameterValues.FALSE`, this stops a firmware update beginning, if one is available.

    Returns:
      parameter collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### getTransactionInformation

    public Parameters getTransactionInformation(Parameters requestParameters)
    Get information stored about a transaction.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.UserReference` The user reference used during the call to `startTransaction(Parameters)`.

    Returns:
      `Parameters` which can contain:

      `ParameterKeys.Result` result of the call to getTransactionInformation. Can have values `ParameterValues.TRUE` or `ParameterValues.FALSE`.

      `ParameterKeys.Errors` a comma separated string of errors which occurred during the call to getTransactionInformation.

      `ParameterKeys.UserReference` The user reference of the transaction.

      `ParameterKeys.Amount` The amount the transaction was performed for.

      `ParameterKeys.TipAmount` The tip amount tip amount for the transaction.

      `ParameterKeys.Environment` The payment environment which the transaction applies to.

      `ParameterKeys.Currency` The currency used during the transaction. Value is the 3 character code passed in during the call to `startTransaction(Parameters)`.

      `ParameterKeys.TransactionState` The current state of the transaction.

      `CCParamTransactionType` The transaction type can be `ParameterValues.Sale`, `ParameterValues.Refund` or `ParameterValues.AccountVerification`.

      `ParameterKeys.TransactionResult` The current result of the transaction.

      `ParameterKeys.OfflineStatus` If returned indicates the status of the transaction in the offline queue.

      `ParameterKeys.LinkedRefundReferences` Comma separated string of user references for linked refunds linked to this transaction.

      `ParameterKeys.CardHashCollection` list of tokens generated by Creditcall payment gateway and or payment device that can be used to identify a card without the PAN. Value in XML format representing List of `CardHash`, deserialize into object using `ChipDnaMobileSerializer.deserializeCardHashes(String)`.

      `ParameterKeys.CardReference` The unique reference generated by the Creditcall payment gateway that can be used to identify a card without using the PAN.

      `ParameterKeys.TransactionDateTime` The date and time the transaction was performed.

      `ParameterKeys.DateTimeFormat` The format of the date and time in `ParameterKeys.TransactionDateTime` parameter.

      `ParameterKeys.TransactionId` The identifier for transactions using the payment gateway.

      `ParameterKeys.Par` Payment Account Reference, alpha numeric reference that is 29 characters in length.

  - ### getStatus

    public Parameters getStatus(Parameters requestParameters)
    Check the current status of different components of ChipDNA Mobile in a single call.

    Parameters returned can be filtered by passing in the `ParameterKeys` with a value of `TRUE`. Only `ParameterKeys` listed in the possible return parameters can be filtered for. If one or more valid `ParameterKeys` with a value of `TRUE` is passed into the request, filtering is enabled, and only the filtered `ParameterKeys` will be returned if available.

    If no `ParameterKeys` are passed into the request or just `PaymentPlatformTest`, then all available `ParameterKeys` are returned in the response.

    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.PaymentPlatformTest` - (Optional) with a value of `ParameterValues.TRUE` will check the status of the payment platform returning the result in a `PaymentPlatformStatus` object in the response. GetStatus call is expensive if the PaymentPlatformTest is included. Sending this parameter does not enable filtering as it not returned as default.

      Any `ParameterKeys` with a value of `TRUE` listed in the possible return parameters. (Except `Result` and `PaymentPlatformStatus`)
    Returns:
      Parameter collection containing the following:

      `ParameterKeys.Result` - Defines if the call to getStatus was successful using the values `TRUE` and `FALSE`

      `ParameterKeys.VersionInformation` - An XML representation of a `VersionInformation` object. `ChipDnaMobileSerializer.deserializeVersionInformation(String)` can be used to retrieve an object.

      `ParameterKeys.ChipDnaStatus` - A string representing the current status of ChipDNA Mobile.

      `ParameterKeys.DeviceStatus` - An XML representation of a `DeviceStatus` object. `ChipDnaMobileSerializer.deserializeDeviceStatus(String)` can be used to retrieve an object.

      `ParameterKeys.TmsStatus` - An XML representation of a `TmsStatus` object. `ChipDnaMobileSerializer.deserializeTmsStatus(String)` can be used to retrieve an object.

      `ParameterKeys.TerminalStatus` - An XML representation of the live `TerminalStatus`. `ChipDnaMobileSerializer.deserializeTerminalStatus(String)` can be used to retrieve an object.

      `ParameterKeys.Environment` - The current environment ChipDnaMobile is currently running in. Will have a value of either `ParameterValues.LiveEnvironment` or `ParameterValues.TestEnvironment`.

      `ParameterKeys.RequestQueueStatus` - An XML representation of a `RequestQueueStatus` object. `ChipDnaMobileSerializer.deserializeRequestQueueStatus(String)` can be used to retrieve an object.

      `ParameterKeys.PaymentPlatformStatus` - An XML representation of a `PaymentPlatformStatus` object. `ChipDnaMobileSerializer.deserializePaymentPlatformStatus(String)` can be used to retrieve an object.

      `ParameterKeys.LinkedRefundsSupported` - When present with the value `ParameterValues.TRUE` indicates that linked refunds are supported with the currently configured terminal.

      `ParameterKeys.StandaloneRefundsSupported` - When present with the value `ParameterValues.TRUE` indicates that standalone refunds are supported with the currently configured terminal.

      `ParameterKeys.CashTransactionsSupported` - When present with the value `ParameterValues.TRUE` indicated that cash transactions are supported with the currently configured terminal.

      `ParameterKeys.ChequeTransactionsSupported` - When present with the value `ParameterValues.TRUE` indicates that cheque transactions are supported with the currently configured terminal.

      `ParameterKeys.TransactionHistorySupported` - When present with the value `ParameterValues.TRUE` indicates that transaction history is supported with the currently configured terminal.

      `ParameterKeys.EmailReceiptSupported` - When present with the value `ParameterValues.TRUE` indicates that centralized emails receipting is supported with the currently configured terminal.

      `ParameterKeys.SmsReceiptSupported` - When present with the value `ParameterValues.TRUE` indicates tha centralized SMS receipting is supported with the currently configure terminal.

      `ParameterKeys.RefundOperatorPinSupported` - Indicates that an operator PIN must be supplied to perform standalone refunds with the currently configured terminal if present with the value `TRUE`.

      `ParameterKeys.OfflineProcessingSupported` - When present with the value `ParameterValues.TRUE` indicates that offline transaction processing is supported with the currently configured terminal.

      `ParameterKeys.TippingSupported` - If present indicates the type of tipping supported with the currently configured terminal. Values can be: `ParameterValues.EndOfDayTipping`, `ParameterValues.OnDeviceTipping`, or `ParameterValues.BothTipping`

      `ParameterKeys.ApplicationIdentifier` - A string representing the current identifier for the application.

      `ParameterKeys.MerchantDisplayName` - If present indicates the currently configured merchant display name.

      `ParameterKeys.PinPadName` - Indicates the currently configured PINpad name, if present.

      `ParameterKeys.PinPadConnectionType` - Indicates the currently configured PINpad connection type, if present.

      `ParameterKeys.PinPadIpAddress` - Indicates the currently configured PINpad IP address, if present.

      `ParameterKeys.PinPadPort` - Indicates the currently configured PINpad port, if present.

      `ParameterKeys.FirmwareUpdateAvailable` - Indicates if a firmware update is available for the currently configured PINpad.

      `ParameterKeys.FirmwareUpdateStatus` - An XML representation of a `FirmwareUpdateStatus` object. `ChipDnaMobileSerializer.deserializeFirmwareUpdateStatus(String)` can be used to retrieve the object.

      `ParameterKeys.POSGUID` - A string representing the current point of sale globally unique identifier.

      `ParameterKeys.TapToMobilePOIIdentifier` - A string representing the current TTM point of interaction identifier.

  - ### getMerchantData

    public Parameters getMerchantData(Parameters requestParameters)
    Get all merchant data in a single call.
    Parameters:
      `requestParameters` - `Parameters` currently not used, can be set to null.
    Returns:
      Parameter collection containing the following:

      `Result` defining if the call to getMerchantData was successful using the values `TRUE` and `FALSE`.

      `MerchantData` An XML representation of the `MerchantData`. `ChipDnaMobileSerializer.deserializeMerchantData(String)` can be used to retrieve an object.

  - ### getAvailableCurrencies

    public Parameters getAvailableCurrencies(Parameters requestParameters)
    Retrieve the available currencies for currently configured terminal.
    Parameters:
      `requestParameters` - `Parameters` collection not currently in use. Can be nil.
    Returns:
      A parameter list which can contain:

      `ParameterKeys.Result` result of the call to getAvailableCurrencies which can contain values `ParameterValues.TRUE` or `ParameterValues.FALSE`.

      `ParameterKeys.Errors` a comma separated string of errors which have occurred during the call to getAvailableCurrencies.

      `ParameterKeys.AvailableCurrencies` An XML representation of the available currencies for each payment method. XML can be deserialized using `ChipDnaMobileSerializer.deserializeAvailableCurrencies(String)` into a `HashMap` with keys `PaymentMethod` and values `ArrayList` of `Currency`.

  - ### connectAndConfigure

    public Parameters connectAndConfigure(Parameters requestParameters)
    Connect to and configure the current device. This method will perform all necessary actions required to get the selected PIN pad ready for transaction. This includes performing TMS updates if required.

    To force a TMS update add parameter `ParameterKeys.ForceTmsUpdate` with value `ParameterValues.TRUE` and to force Full Tms Update pass paramter `ParameterKeys.FullTmsUpdate` with value `ParameterValues.TRUE`.

    This method can be called regardless of the current connection state of the PIN pad. When the PIN pad is already connected TMS checks will be made and a TMS update performed if required. When new configuration is available this method will then re-configure the PIN pad. This method can also perform registration when required. Register listener using `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)` to get the results of calling this method. To receive updates on the progress of this method register listener using `addConfigurationUpdateListener(IConfigurationUpdateListener)` method. Updates are reported by `IConfigurationUpdateListener.onConfigurationUpdateListener(Parameters)` which will contain a `ParameterKeys.ConfigurationUpdate` key with the following values:

    `ParameterValues.ConnectionAndConfigureStarted`

    `ParameterValues.Connecting`

    `ParameterValues.PerformingTmsUpdate`

    `ParameterValues.CheckingPinPadConfig`

    `ParameterValues.UpdatingPinPadConfig`

    To receive updates on the current connection status of the PIN pad observers can be added using the `addDeviceUpdateListener(IDeviceUpdateListener)` method. Updates are reported by `IDeviceUpdateListener.onDeviceUpdate(Parameters)` which will contain a `ParameterKeys.DeviceStatusUpdate` item with a serialized `DeviceStatus` object value.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.ForceTmsUpdate` Force connectAndConfigure to perform a TMS update whether one is required or not.

      `ParameterKeys.FullTmsUpdate` Force a full TMS update whether one is required or not. All configuration will be downloaded regardless of whether it's required.

      `ParameterKeys.BLEScanTime` (Optional) Set the length of time to scan for Bluetooth Low Energy (BLE) devices. The value is required to be a string valued number between 1 and 30. The default value of 5 seconds will be used if this value is not available.

      `ParameterKeys.ApplyFirmwareUpdate` (Only supported on VP3350) When present with the value `ParameterValues.FALSE`, this stops a firmware update beginning, if one is available.

      `ParameterKeys.PaymentDevicePOI` (Optional) Sets if the Payment Device point of interaction is to be configured for payment processing. Values can be `ParameterValues.TRUE` or `ParameterValues.FALSE`. (Defaults to `ParameterValues.TRUE` if the parameter key is not present).

      `ParameterKeys.TapToMobilePOI` (Optional) Sets if the Tap To Mobile point of interaction is to be configured for payment processing. Values can be `ParameterValues.TRUE` or `ParameterValues.FALSE`. (Defaults to `ParameterValues.FALSE` if the parameter key is not present).

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### getCardDetails

    public Parameters getCardDetails(Parameters requestParameters)
    Acquire card details without performing a transaction. Register listener using `addCardDetailsListener(ICardDetailsListener)` to get the card details results.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Currency` indicating the currency to be set. Only needs to be set if more than one currency is supported. Use `getAvailableCurrencies(Parameters)` to check for supported currencies

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### startTransaction

    public Parameters startTransaction(Parameters requestParameters)
    Start a transaction. Register listener using `addTransactionFinishedListener(ITransactionFinishedListener)` then get the transaction results. To receive updates during a transaction register listener using `addTransactionUpdateListener(ITransactionUpdateListener)`.

    Before calling `startTransaction(Parameters)` implement and register listeners for

    - `IDeferredAuthorizationListener`
    - `IForceAcceptanceListener`
    - `IPartialApprovalListener`
    - `ISignatureVerificationListener`
    - `ITransactionFinishedListener`
    - `ITransactionUpdateListener`
    - `IVerifyIdListener`
    - `IVoiceReferralListener`
    - `IUserNotificationListener` - required for BBPOS Chipper 2X BT & BBPOS Chipper 30 BT
    - `IApplicationSelectionListener` - required for BBPOS Chipper 2X BT & BBPOS Chipper 30 BT
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Amount` (Required) The amount to be used in the transaction.

      `ParameterKeys.UserReference` (Required) A unique reference for this transaction.

      `ParameterKeys.TransactionType` (Required) The transaction type for this transaction. Values can be `ParameterValues.Sale` or `ParameterValues.Refund` or `ParameterValues.AccountVerification`.

      `ParameterKeys.Currency` Set the currency for this transaction. Only required when `getAvailableCurrencies(Parameters)` returns more than one currency. If only a single currency is supported, it will be used by default.

      `ParameterKeys.PANKeyEntry` Requests a PAN Key Entry transaction is started for a card not present transaction. Values can be `ParameterValues.TRUE` or `ParameterValues.FALSE`.

      `ParameterKeys.DelayOnlineProcessing` Requests that online processing is delayed. Values can be `ParameterValues.TRUE` or `ParameterValues.FALSE`. In this case the transaction will process to the point of going online and then return a EncodedRequest to the registered `ITransactionFinishedListener`

      `ParameterKeys.PaymentMethod` Specifies the payment method being used for this transaction. Values can be `ParameterValues.Card`, `ParameterValues.Cash` or `ParameterValues.Cheque`.

      `ParameterKeys.CredentialOnFileFirstStore` (Optional) Flags the transaction as the first store for a Credential on File transaction when the value is `ParameterValues.TRUE`

      `ParameterKeys.CredentialOnFileReason` (Optional) Indicates the reason for a Credential on File transaction. Only considered if the value for `ParameterKeys.CredentialOnFileFirstStore` is `ParameterValues.TRUE`. Values can be:

      - `ParameterValues.ReasonUnscheduled`
      - `ParameterValues.ReasonInstallment`
      - `ParameterValues.ReasonIncremental`
      - `ParameterValues.ReasonResubmission`
      - `ParameterValues.ReasonDelayedCharge`
      - `ParameterValues.ReasonReAuth`
      - `ParameterValues.ReasonNoShow`

      `ParameterKeys.OnDeviceTippingPrompt` (Optional) Sets a custom tipping prompt for on-device tipping. Only supported on Miura M020 and M021 PIN pads.

      `ParameterKeys.DynamicTippingAmounts` (Optional) or `ParameterKeys.DynamicTippingPercentages` (Optional) Enables on-device dynamic tipping using the provided amounts or percentages. Only one of the amount types can be used in a request. Dynamic tipping is currently only supported on Miura M020 and M021 PIN pads.

      `ParameterKeys.DynamicTippingHeader` (Optional) Sets the header for the dynamic tipping screen. This is only supported if dynamic tipping is enabled.

      `ParameterKeys.TransactionPOI` (Optional) Sets the point of interaction to be used for this transaction. If one POI has been configured via `connectAndConfigure(Parameters)`, then this will be the default value, if one is not present. If multiple POI have been configured, then the default value will be `ParameterValues.PaymentDevice`, if the parameter key is not present. Values can be `ParameterValues.PaymentDevice` or `ParameterValues.TapToMobile`

      `ParameterKeys.TipAmount` (Optional) The tip amount to be used in the transaction (Merchant Tipping). This tip amount is added to the transaction amount. Only supported on `ParameterValues.TapToMobile`.

      `ParameterKeys.FeatureTokens` (Optional) The XML string of feature token(s) created by `ChipDnaMobileSerializer.serializeFeatureTokens(List)` to be sent in the online request to have a collection of card tokens for the PAN returned in the `ITransactionFinishedListener`.

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueSignatureVerification

    public Parameters continueSignatureVerification(Parameters requestParameters)
    Continue transaction currently waiting for signature verification. Register listener using `addSignatureVerificationListener(ISignatureVerificationListener)` to receive the signature verification event. When triggered the event will contain a `Parameters` collection containing `ParameterKeys.ResponseRequired` with value `ParameterValues.TRUE`.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.Result` indicating the outcome of signature verification. Value can be `ParameterValues.TRUE` to indicate that signature verification was successful or `ParameterValues.FALSE` to indicate that signature verification has failed.

      `ParameterKeys.OperatorPin` required when `ISignatureVerificationListener.onSignatureVerification(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueDeferredAuthorization

    public Parameters continueDeferredAuthorization(Parameters requestParameters)
    Continue transaction currently waiting for deferred authorisation response. Informs ChipDnaMobile if the integrating application wishes to proceed with the deferred authorization.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Result` indicating whether to proceed. Value can be `ParameterValues.TRUE` to indicate that the deferred authorization should be approved, or `ParameterValues.FALSE` to indicate that the deferred authorization should be declined.

      `ParameterKeys.OperatorPin` required when `IDeferredAuthorizationListener.onDeferredAuthorizationListener(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueVoiceReferral

    public Parameters continueVoiceReferral(Parameters requestParameters)
    Continue transaction currently waiting for voice referral response. Informs ChipDnaMobile of the result of voice referral.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Result` indicating the outcome of a voice referral. Value can be `ParameterValues.TRUE` to indicate that the voice referral has been approved, or `ParameterValues.FALSE` to indicate that the voice referral has been declined.

      `ParameterKeys.AuthCode` The auth code of the voice referral. For approved voice referral, it must be 1-6 alphanumeric characters. For declined voice referral, auth code will be ignored.

      `ParameterKeys.OperatorPin` required when `IVoiceReferralListener.onVoiceReferral(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continuePartialApproval

    public Parameters continuePartialApproval(Parameters requestParameters)
    Continue transaction currently waiting for parital approval response. Informs ChipDnaMobile if the integrating application wishes to proceed with the partial approval.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Result` indicating the outcome of a partial approval. Value can be `ParameterValues.TRUE` to indicate that the partial approval has been approved, or `ParameterValues.FALSE` to indicate that the partial approval has been declined.

      `ParameterKeys.OperatorPin` required when `IPartialApprovalListener.onPartialApproval(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueForceAcceptance

    public Parameters continueForceAcceptance(Parameters requestParameters)
    Continue transaction currently waiting for forced acceptance response. Informs ChipDnaMobile if the integrating application wishes to proceed with the forced acceptance.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Result` indicating the outcome of forced acceptance. Value can be `ParameterValues.TRUE` to indicate that the forced acceptance has been approved, or `ParameterValues.FALSE` to indicate that the forced acceptance has been declined.

      `ParameterKeys.OperatorPin` required when `IForceAcceptanceListener.onForceAcceptance(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

      .

  - ### continueIdVerification

    public Parameters continueIdVerification(Parameters requestParameters)
    Continue transaction currently waiting for ID verification response. Informs ChipDnaMobile of the result of ID verification.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Result` indicating the outcome of a partial approval. Value can be `ParameterValues.TRUE` to indicate that ID verification has been approved, or `ParameterValues.FALSE` to indicate that ID verification has been declined.

      `ParameterKeys.OperatorPin` required when `IVerifyIdListener.onVerifyId(Parameters)` contains `ParameterKeys.OperatorPinRequired` with value `ParameterValues.TRUE`.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueApplicationSelection

    public Parameters continueApplicationSelection(Parameters requestParameters)
    Continue transaction currently waiting for card application selection response. Informs ChipDnaMobile of the result of a card application selection.
    Parameters:
      `requestParameters` - A parameter list which can contain:

      `ParameterKeys.Result` indicating the outcome of a card application selection. Value can be `ParameterValues.TRUE` to indicate that the card application selection has been completed, or `ParameterValues.FALSE` to indicate that the card application selection has failed.

      `ParameterKeys.SelectedApplication` is required to return the selected card application

    Returns:
      parameter collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueSignatureCapture

    public Parameters continueSignatureCapture(Parameters requestParameters)
    Continue transaction currently waiting for signature capture. This method should be called in order to pass in digital signature information.

    Register listener using `addSignatureCaptureListener(ISignatureCaptureListener)` to receive the signature capture event. When triggered the event will contain a `Parameters` collection containing `ParameterKeys.ResponseRequired` with value `ParameterValues.TRUE`.

    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.SignatureData` containing data for digital signature represented as a base64 string of PNG image data. Signature must be a minimum dimension of 25x150 or 150x25 pixels not including white space.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### continueRequestedActivity

    public Parameters continueRequestedActivity(android.app.Activity activity)
    Continue transaction currently waiting for activity response. Informs ChipDnaMobile of the activity to be used.
    Parameters:
      `activity` - The activity that should be used to continue the transaction. The Activity passed as a parameter should be in foreground and active until the transaction is finished.
    Returns:
      parameter collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### linkedRefundTransaction

    public Parameters linkedRefundTransaction(Parameters requestParameters)
    Start a linked refund transaction to refund part or all of a previously online approved transaction.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.Amount` The amount to be refunded.

      `ParameterKeys.UserReference` A unique user reference for the linked refund.

      `ParameterKeys.SaleReference` The user reference for the original sale transaction. When this parameter is used then original sale `ParameterKeys.CardEaseReference` must not be provided

      `ParameterKeys.CardEaseReference` The CardEase reference for the original sale transaction. When this parameter is used then the original sale `ParameterKeys.SaleReference` must not be provided.

    Returns:
      A parameter collection which can contain:

      `ParameterKeys.TransactionResult` indicating if the transaction has been `ParameterValues.Approved` or `ParameterValues.Declined`.

      `ParameterKeys.Errors` Containing a comma separated list of errors which have occured.

      .

      `ParameterKeys.ReceiptData` only returned when transaction result is approved. Serialized receipt data in XML format. The data can be deserialized into an NSDictionary using `ChipDnaMobileSerializer.deserializeReceiptData(String)`. The deserialized NSDictionary will have the string `ChipDnaMobileSerializer.ReceiptItemTag` as keys and `ReceiptField` objects as values.

      `ParameterKeys.PreformattedMerchantReceipt` A preformatted merchant receipt string. Only returned on approval.

      `ParameterKeys.PreformattedCustomerReceipt` A preformatted customer receipt string. Only returned on approval.

      `ParameterKeys.Par` Payment Account Reference, alpha numeric reference that is 29 characters in length.

      `ParameterKeys.Amount` The amount refunded in minor units e.g. "123" for GBP1.23.

      `ParameterKeys.PaymentMethod` When performing a Cash or Cheque Linked Refund, the payment method of `ParameterValues.Cash` or `ParameterValues.Cheque` will need to be provided, Card will be used by default

      `ParameterKeys.UserReference` The unique user reference for the linked refund.

      `ParameterKeys.TransactionDateTimeUtc` The UTC date and time of the refund transaction.

      `ParameterKeys.Currency` The 3-char currency code used during the transaction.

      `ParameterKeys.MaskedPan` The masked primary account number of the original sale transaction, showing only the first 6 (if available) and last 4 digits.

      `ParameterKeys.DateTimeFormat` The format of the date and time in `ParameterKeys.TransactionDateTime` parameter.

      `ParameterKeys.CardSchemeId` The `ParameterKeys.CardSchemeId` of the original sale transaction.

      `ParameterKeys.CardEaseReference` The CardEase reference for the linked refund transaction - a unique GUID generated for a transaction if the authorization was submitted online to the Creditcall payment platform.

      `ParameterKeys.AuthCode` Alpha numeric authorization code, up to 12 characters.

      `CCParamTransactionType` The transaction type will be `ParameterValues.Refund`.

      `ParameterKeys.CardReference` The unique reference generated by the Creditcall payment gateway that can be used to identify a card without using the PAN.

      `ParameterKeys.TransactionDateTime` The local date and time the refund transaction was performed.

      `ParameterKeys.CardHashCollection` list of tokens generated by Creditcall payment gateway and or payment device that can be used to identify a card without the PAN. Value in XML format representing List of `CardHash`, deserialize into object using `ChipDnaMobileSerializer.deserializeCardHashes(String)`.

  - ### confirmTransaction

    public Parameters confirmTransaction(Parameters requestParameters)
    Finalizes a transaction after it has been approved so that the transaction will be settled. This method allows the transcation to be committed using a different amount to the authorized amount.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain the following:

      `ParameterKeys.UserReference` The unique user reference used when performing the transaction.

      `ParameterKeys.Amount` The amount to confirm the transaction for.

      `ParameterKeys.TipAmount` The tip amount for the transaction. Can only be used for transaction which used end of day tipping.

      `ParameterKeys.CloseTransaction` Close the current transaction. Only available when end of day tipping is enabled. By default this parameter is `ParameterValues.TRUE`.

    Returns:
      Parameter collection which can contain:

      `ParameterKeys.TransactionResult` indicating if commiting the transaction has been `ParameterValues.Approved` or `ParameterValues.Declined`.

      `ParameterKeys.Errors` Containing a comma separated list of errors which have occured.

      `ParameterKeys.ReceiptData` only returned when transaction result is approved. Serialized receipt data in XML format. The data can be deserialized into an NSDictionary using `ChipDnaMobileSerializer.deserializeReceiptData(String)`. The deserialized NSDictionary will have the string `ChipDnaMobileSerializer.ReceiptItemTag` as keys and `ReceiptField` objects as values.

      `ParameterKeys.PreformattedMerchantReceipt` A preformatted merchant receipt string. Only returned on approval.

      `ParameterKeys.PreformattedCustomerReceipt` A preformatted customer receipt string. Only returned on approval.

  - ### voidTransaction

    public Parameters voidTransaction(Parameters requestParameters)
    Void a previously approved but uncommited transaction.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.UserReference` The unique user reference used during the call to `startTransaction(Parameters)`.

    Returns:
      A parameter list which can contain:

      `ParameterKeys.TransactionResult` indicating if voiding the transaction has been `ParameterValues.Approved` or `ParameterValues.Declined`.

      `ParameterKeys.ReceiptData` only returned when transaction result is approved. Serialized receipt data in XML format. The data can be deserialized into an NSDictionary using `ChipDnaMobileSerializer.deserializeReceiptData(String)`. The deserialized NSDictionary will have the string `ChipDnaMobileSerializer.ReceiptItemTag` as keys and `ReceiptField` objects as values.

      `ParameterKeys.PreformattedMerchantReceipt` A preformatted merchant receipt string. Only returned on approval.

      `ParameterKeys.PreformattedCustomerReceipt` A preformatted customer receipt string. Only returned on approval.

  - ### terminateTransaction

    public Parameters terminateTransaction(Parameters requestParameters)
    Terminate the currently processing transaction.
    Parameters:
      `requestParameters` - `Parameters` Currently not used, can be set to null.
    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### retryFailedOfflineRequest

    public Parameters retryFailedOfflineRequest(Parameters requestParameters)
    Retry a transaction which has been moved to the failed offline queue.
    Parameters:
      `requestParameters` - `Parameters` collection which contains the `ParameterKeys.UserReference` of the transaction wishing to be retried.
    Returns:
      A parameter collection which can contain:

      `ParameterKeys.TransactionResult` indicating if retrying the transaction has been `ParameterValues.Approved` or `ParameterValues.Declined`.

      `ParameterKeys.Errors` contains any errors which occured during the call to `retryFailedOfflineRequest(Parameters)`.

      `ParameterKeys.ReceiptData` only returned when transaction result is approved. Serialized receipt data in XML format. The data can be deserialized into an NSDictionary using `ChipDnaMobileSerializer.deserializeReceiptData(String)`. The deserialized NSDictionary will have the string `ChipDnaMobileSerializer.ReceiptItemTag` as keys and `ReceiptField` objects as values.

      `ParameterKeys.PreformattedMerchantReceipt` A preformatted merchant receipt string. Only returned on approval.

      `ParameterKeys.PreformattedCustomerReceipt` A preformatted customer receipt string. Only returned on approval.

  - ### deleteFailedOfflineRequest

    public Parameters deleteFailedOfflineRequest(Parameters requestParameters)
    Delete a transaction which has been moved to the failed offline queue.
    Parameters:
      `requestParameters` - `Parameters` collection containing the `ParameterKeys.UserReference` of the transaction to be deleted.
    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### setIdleMessage

    public Parameters setIdleMessage(Parameters requestParameters)
    Display text on the PIN pad for a given amount of time at which point the PIN pad will return to idle. Currently only supported by Miura PIN pads.
    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `CCParamIdleMessage` Message to be displayed by PIN pad. Use value of `ParameterValues.ClearIdleMessage` to clear the message back to default.

      `ParameterKeys.DisplayTime` Amount of time for the message to be displayed in seconds. Should be a decimal value, between 1 and 2147483. This parameter is optional, if it is not supplied or set to 0 an infinite time will be used.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### processReceipt

    public Parameters processReceipt(Parameters requestParameters)
    Send receipts via email or SMS using the Creditcall platform.

    Register listener using `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener)`, results are returned via `IProcessReceiptFinishedListener.onProcessReceiptFinishedListener(Parameters)` .

    Parameters:
      `requestParameters` - `Parameters` collection which can contain:

      `ParameterKeys.UserReference` User reference of the transaction the receipt is for. This is mandatory.

      `ParameterKeys.SendEmailReceipt` Set value to `ParameterValues.TRUE` to send receipt via email.

      `ParameterKeys.SendSmsReceipt` Set value to `ParameterValues.TRUE` to send a receipt via SMS.

      `ParameterKeys.ReceiptText` Defines the receipt text to be sent.

      `ParameterKeys.EmailAddress` Required for email receipts, defines the email to send the receipt to.

      `ParameterKeys.PhoneNumber`, Required for SMS receipts, defines the phone number to send the receipt to.

      `ParameterKeys.ReceiptSourceName` Defines the name of the entity sending the receipt. For SMS receipts this field is used for setting the 'SMS Originating Address' - i.e. the sender name shown on mobiles. Support for this field is networks dependent.

      `ParameterKeys.ReceiptSourceEmail` Required only for email receipts,defines the email of the receipt is being sent from.

      `ParameterKeys.ReceiptEmailSubject` Required only for email receipts, defines the subject of the receipt email.

    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### disconnect

    public Parameters disconnect(Parameters requestParameters)
    Disconnects the currently connected PINpad. The PINpad will only be disconnected if the device is not busy.

    To receive updates on the current connection status of the PIN pad observers can be added using the `addDeviceUpdateListener(IDeviceUpdateListener)` method. Updates are reported by `IDeviceUpdateListener.onDeviceUpdate(Parameters)` which will contain a `ParameterKeys.DeviceStatusUpdate` item with a serialized `DeviceStatus` object value.
    Parameters:
      `requestParameters` - `Parameters` Currently not used, can be set to null.
    Returns:
      `Parameters` collection which can contain:

      `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### addAvailablePinPadsListener

    public void addAvailablePinPadsListener(IAvailablePinPadsListener listener)
    Add a listener to get events when calling method `getAvailablePinPads(Parameters)`.

    To remove registered listener call `removeAvailablePinPadsListener(IAvailablePinPadsListener)` method. To remove all registered listeners call `clearAllAvailablePinPadsListeners()` method.

    Parameters:
      `listener` - implementation of `IAvailablePinPadsListener`.

  - ### removeAvailablePinPadsListener

    public void removeAvailablePinPadsListener(IAvailablePinPadsListener listener)
    Remove a listener that was previously added via `addAvailablePinPadsListener(IAvailablePinPadsListener)`.
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllAvailablePinPadsListeners

    public void clearAllAvailablePinPadsListeners()
    Remove all listeners that were added via `addAvailablePinPadsListener(IAvailablePinPadsListener)`.

  - ### addConnectAndConfigureFinishedListener

    public void addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener listener)
    Add a listener to get events when method `connectAndConfigure(Parameters)` has completed.

    To remove registered listener call `removeConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)` method. To remove all registered listeners call `clearAllConnectAndConfigureFinishedListeners()` method.

    Parameters:
      `listener` - implementation of `IConnectAndConfigureFinishedListener`.

  - ### removeConnectAndConfigureFinishedListener

    public void removeConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener listener)
    Remove a listener that was previously added via `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)`.
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllConnectAndConfigureFinishedListeners

    public void clearAllConnectAndConfigureFinishedListeners()
    Remove all listeners that were added via `addConnectAndConfigureFinishedListener(IConnectAndConfigureFinishedListener)`.

  - ### addDeviceUpdateListener

    public void addDeviceUpdateListener(IDeviceUpdateListener listener)
    Add a listener to get events about device connectivity. Register listener before calling method `connectAndConfigure(Parameters)`.

    To remove registered listener call `removeDeviceUpdateListener(IDeviceUpdateListener)` method. To remove all registered listeners call `clearAllDeviceUpdateListeners()` method.

    Parameters:
      `listener` - implementation of `IDeviceUpdateListener`.

  - ### removeDeviceUpdateListener

    public void removeDeviceUpdateListener(IDeviceUpdateListener listener)
    Remove a listener that was previously added via `addDeviceUpdateListener(IDeviceUpdateListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllDeviceUpdateListeners

    public void clearAllDeviceUpdateListeners()
    Remove all listeners that were added via `addDeviceUpdateListener(IDeviceUpdateListener)`

  - ### addConfigurationUpdateListener

    public void addConfigurationUpdateListener(IConfigurationUpdateListener listener)
    Add a listener to get events about device configuration. Register listener before calling method `connectAndConfigure(Parameters)`.

    To remove registered listener call `removeConfigurationUpdateListener(IConfigurationUpdateListener)` method. To remove all registered listeners call `clearAllConfigurationUpdateListeners()` method.

    Parameters:
      `listener` - implementation of `IConfigurationUpdateListener`.

  - ### removeConfigurationUpdateListener

    public void removeConfigurationUpdateListener(IConfigurationUpdateListener listener)
    Remove a listener that was previously added via `addConfigurationUpdateListener(IConfigurationUpdateListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllConfigurationUpdateListeners

    public void clearAllConfigurationUpdateListeners()
    Remove all listeners that were added via `addConfigurationUpdateListener(IConfigurationUpdateListener)`

  - ### addTransactionUpdateListener

    public void addTransactionUpdateListener(ITransactionUpdateListener listener)
    Add a listener to get events during a transaction. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeTransactionUpdateListener(ITransactionUpdateListener)` method. To remove all registered listeners call `clearAllTransactionUpdateListener()` method.

    Parameters:
      `listener` - implementation of `ITransactionUpdateListener`.

  - ### removeTransactionUpdateListener

    public void removeTransactionUpdateListener(ITransactionUpdateListener listener)
    Remove a listener that was previously added via `addTransactionUpdateListener(ITransactionUpdateListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllTransactionUpdateListener

    public void clearAllTransactionUpdateListener()
    Remove all listeners that were added via `addTransactionUpdateListener(ITransactionUpdateListener)`

  - ### addTransactionFinishedListener

    public void addTransactionFinishedListener(ITransactionFinishedListener listener)
    Add a listener to get the results of a transaction. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeTransactionFinishedListener(ITransactionFinishedListener)` method. To remove all registered listeners call `clearAllTransactionFinishedListener()` method.

    Parameters:
      `listener` - implementation of `ITransactionFinishedListener`.

  - ### removeTransactionFinishedListener

    public void removeTransactionFinishedListener(ITransactionFinishedListener listener)
    Remove a listener that was previously added via `addTransactionFinishedListener(ITransactionFinishedListener)`.
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllTransactionFinishedListener

    public void clearAllTransactionFinishedListener()
    Remove all listeners that were added via `addTransactionFinishedListener(ITransactionFinishedListener)`

  - ### addDeferredAuthorizationListener

    public void addDeferredAuthorizationListener(IDeferredAuthorizationListener listener)
    Add a listener to get the event for deferred authorization confirmation. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeDeferredAuthorizationListener(IDeferredAuthorizationListener)` method. To remove all registered listeners call `clearAllDeferredAuthorizationListener()` method.

    Parameters:
      `listener` - implementation of `IDeferredAuthorizationListener`.

  - ### removeDeferredAuthorizationListener

    public void removeDeferredAuthorizationListener(IDeferredAuthorizationListener listener)
    Remove a listener that was previously added via `addDeferredAuthorizationListener(IDeferredAuthorizationListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllDeferredAuthorizationListener

    public void clearAllDeferredAuthorizationListener()
    Remove all listeners that were added via `addDeferredAuthorizationListener(IDeferredAuthorizationListener)`

  - ### addSignatureVerificationListener

    public void addSignatureVerificationListener(ISignatureVerificationListener listener)
    Add a listener to get the event for signature verification. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeSignatureVerificationListener(ISignatureVerificationListener)` method. To remove all registered listeners call `clearAllSignatureVerificationListener()` method.

    Parameters:
      `listener` - implementation of `ISignatureVerificationListener`.

  - ### removeSignatureVerificationListener

    public void removeSignatureVerificationListener(ISignatureVerificationListener listener)
    Remove a listener that was previously added via `addSignatureVerificationListener(ISignatureVerificationListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllSignatureVerificationListener

    public void clearAllSignatureVerificationListener()
    Remove all listeners that were added via `addSignatureVerificationListener(ISignatureVerificationListener)`

  - ### addSignatureCaptureListener

    public void addSignatureCaptureListener(ISignatureCaptureListener listener)
    Add a listener to get the event for signature capture. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeSignatureCaptureListener(ISignatureCaptureListener)` method. To remove all registered listeners call `clearAllSignatureCaptureListeners()` method.

    Parameters:
      `listener` - implementation of `ISignatureCaptureListener`.

  - ### removeSignatureCaptureListener

    public void removeSignatureCaptureListener(ISignatureCaptureListener listener)
    Remove a listener that was previously added via `addSignatureCaptureListener(ISignatureCaptureListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllSignatureCaptureListeners

    public void clearAllSignatureCaptureListeners()
    Remove all listeners that were added via `addSignatureCaptureListener(ISignatureCaptureListener)`

  - ### addFirmwareUpdateListener

    public void addFirmwareUpdateListener(IFirmwareUpdateListener listener)
    Add a listener to get the event for Firmware Updates. Register listener before calling method `connectAndConfigure(Parameters)`.

    To remove registered listener call `removeFirmwareUpdateListener(IFirmwareUpdateListener)` method. To remove all registered listeners call `clearAllFirmwareUpdateListeners()` method.

    Parameters:
      `listener` - implementation of `IFirmwareUpdateListener`.

  - ### removeFirmwareUpdateListener

    public void removeFirmwareUpdateListener(IFirmwareUpdateListener listener)
    Remove a listener that was previously added via `addFirmwareUpdateListener(IFirmwareUpdateListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllFirmwareUpdateListeners

    public void clearAllFirmwareUpdateListeners()
    Remove all listeners that were added via `addFirmwareUpdateListener(IFirmwareUpdateListener)`

  - ### addVoiceReferralListener

    public void addVoiceReferralListener(IVoiceReferralListener listener)
    Add a listener to get the event for voice referral. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeVoiceReferralListener(IVoiceReferralListener)` method. To remove all registered listeners call `clearAllVoiceReferralListeners()` method.

    Parameters:
      `listener` - implementation of `IVoiceReferralListener`.

  - ### removeVoiceReferralListener

    public void removeVoiceReferralListener(IVoiceReferralListener listener)
    Remove a listener that was previously added via `addVoiceReferralListener(IVoiceReferralListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllVoiceReferralListeners

    public void clearAllVoiceReferralListeners()
    Remove all listeners that were added via `addVoiceReferralListener(IVoiceReferralListener)`

  - ### addPartialApprovalListener

    public void addPartialApprovalListener(IPartialApprovalListener listener)
    Add a listener to get the event for partial approval confirmation. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removePartialApprovalListener(IPartialApprovalListener)` method. To remove all registered listeners call `clearAllPartialApprovalListener()` method.

    Parameters:
      `listener` - implementation of `IPartialApprovalListener`.

  - ### removePartialApprovalListener

    public void removePartialApprovalListener(IPartialApprovalListener listener)
    Remove a listener that was previously added via `addPartialApprovalListener(IPartialApprovalListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllPartialApprovalListener

    public void clearAllPartialApprovalListener()
    Remove all listeners that were added via `addPartialApprovalListener(IPartialApprovalListener)`

  - ### addForceAcceptanceListener

    public void addForceAcceptanceListener(IForceAcceptanceListener listener)
    Add a listener to get the event for forced acceptance confirmation. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeForceAcceptanceListener(IForceAcceptanceListener)` method. To remove all registered listeners call `clearAllForceAcceptanceListener()` method.

    Parameters:
      `listener` - implementation of `IForceAcceptanceListener`.

  - ### removeForceAcceptanceListener

    public void removeForceAcceptanceListener(IForceAcceptanceListener listener)
    Remove a listener that was previously added via `addForceAcceptanceListener(IForceAcceptanceListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllForceAcceptanceListener

    public void clearAllForceAcceptanceListener()
    Remove all listeners that were added via `addForceAcceptanceListener(IForceAcceptanceListener)`

  - ### addVerifyIdListener

    public void addVerifyIdListener(IVerifyIdListener listener)
    Add a listener to get the event for ID verification. Register listener before calling method `startTransaction(Parameters)`.

    To remove registered listener call `removeVerifyIdListener(IVerifyIdListener)` method. To remove all registered listeners call `clearAllVerifyIdListener()` method.

    Parameters:
      `listener` - implementation of `IVerifyIdListener`.

  - ### removeVerifyIdListener

    public void removeVerifyIdListener(IVerifyIdListener listener)
    Remove a listener that was previously added via `addVerifyIdListener(IVerifyIdListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllVerifyIdListener

    public void clearAllVerifyIdListener()
    Remove all listeners that were added via `addVerifyIdListener(IVerifyIdListener)`

  - ### addCardDetailsListener

    public void addCardDetailsListener(ICardDetailsListener listener)
    Add a listener to get results when calling method `getAvailableCurrencies(Parameters)`.

    To remove registered listener call `removeCardDetailsListener(ICardDetailsListener)` method. To remove all registered listeners call `clearAllCardDetailsListener()` method.

    Parameters:
      `listener` - implementation of `ICardDetailsListener`.

  - ### removeCardDetailsListener

    public void removeCardDetailsListener(ICardDetailsListener listener)
    Remove a listener that was previously added via `addCardDetailsListener(ICardDetailsListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllCardDetailsListener

    public void clearAllCardDetailsListener()
    Remove all listeners that were added via `addCardDetailsListener(ICardDetailsListener)`

  - ### addTmsUpdateListener

    public void addTmsUpdateListener(ITmsUpdateListener listener)
    Add a listener to get results when calling method `requestTmsUpdate(Parameters)`.

    To remove registered listener call `removeTmsUpdateListener(ITmsUpdateListener)` method. To remove all registered listeners call `clearAllTmsUpdateListener()` method.

    Parameters:
      `listener` - implementation of `ITmsUpdateListener`.

  - ### removeTmsUpdateListener

    public void removeTmsUpdateListener(ITmsUpdateListener listener)
    Remove a listener that was previously added via `addTmsUpdateListener(ITmsUpdateListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllTmsUpdateListener

    public void clearAllTmsUpdateListener()
    Remove all listeners that were added via `addTmsUpdateListener(ITmsUpdateListener)`

  - ### addProcessReceiptFinishedListener

    public void addProcessReceiptFinishedListener(IProcessReceiptFinishedListener listener)
    Add a listener to get results when calling method `processReceipt(Parameters)`.

    To remove registered listener call `removeProcessReceiptFinishedListener(IProcessReceiptFinishedListener)` method. To remove all registered listeners call `clearAllProcessReceiptFinishedListener()` method.

    Parameters:
      `listener` - implementation of `IProcessReceiptFinishedListener`.

  - ### removeProcessReceiptFinishedListener

    public void removeProcessReceiptFinishedListener(IProcessReceiptFinishedListener listener)
    Remove a listener that was previously added via `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener)` .
    Parameters:
      `listener` - The listener to be removed.

  - ### clearAllProcessReceiptFinishedListener

    public void clearAllProcessReceiptFinishedListener()
    Remove all listeners that were added via `addProcessReceiptFinishedListener(IProcessReceiptFinishedListener)`

  - ### addApplicationSelectionListener

    public void addApplicationSelectionListener(IApplicationSelectionListener listener)
    Add a listener to know when card application selection is required after a call to `startTransaction(Parameters)`.

    When updates are no longer required by the listener a call should be made to `removeApplicationSelectionListener(IApplicationSelectionListener)`.

    Parameters:
      `listener` - Listener wishing to know when Card Application Selection is required.

  - ### removeApplicationSelectionListener

    public void removeApplicationSelectionListener(IApplicationSelectionListener listener)
    Remove a listener currently listening for card application selection.
    Parameters:
      `listener` - Listener to be removed.

  - ### clearAllApplicationSelectionListener

    public void clearAllApplicationSelectionListener()
    Remove all listeners that were added via `addApplicationSelectionListener(IApplicationSelectionListener)`

  - ### addUserNotificationListener

    public void addUserNotificationListener(IUserNotificationListener listener)
    Add a listener to receive updates on notifications which need to be shown to the customer after a call to `startTransaction(Parameters)`.

    When updates are no longer required by an listener a call should be made to `removeUserNotificationListener(IUserNotificationListener)`.

    Parameters:
      `listener` - Listener wishing to receive transaction updates.

  - ### removeUserNotificationListener

    public void removeUserNotificationListener(IUserNotificationListener listener)
    Remove a listener currently listening for user notifications.
    Parameters:
      `listener` - Listener to be removed.

  - ### clearAllUserNotificationListener

    public void clearAllUserNotificationListener()
    Remove all listeners that were added via `addUserNotificationListener(IUserNotificationListener)`

  - ### addRequestActivityListener

    public void addRequestActivityListener(IRequestActivityListener listener)
    Add a listener to know when current activity is required after a call to `startTransaction(Parameters)`.

    When updates are no longer required by the listener a call should be made to `removeRequestActivityListener(IRequestActivityListener)`.

    Parameters:
      `listener` - Listener wishing to know when Activity is requested.

  - ### removeRequestActivityListener

    public void removeRequestActivityListener(IRequestActivityListener listener)
    Remove a listener currently listening for activity being requested for transaction.
    Parameters:
      `listener` - Listener to be removed.

  - ### clearAllRequestActivityListener

    public void clearAllRequestActivityListener()
    Remove all listeners that were added via `addRequestActivityListener(IRequestActivityListener)`

  - ### initialize

    public static Parameters initialize(android.content.Context applicationContext, Parameters parameters)
    Initializes ChipDnaMobile. Ensures an encrypted database is used and migrates the previous versions of the SDK to use encryption, as needed. The specified delegate will be notified when a password is required and whether the initialisation was successful or not.

    The initialization process has to be completed successfully before ChipDnaMobile functionality is enabled. Only static methods can be executed before the initialisation process has finished successfully.

    Once ChipDnaMobile has been initialize successfully, @{link #dispose:} should be call before the application terminates to ensure resources are disposed of correctly.

    Parameters:
      `parameters` - collection containing one or more of the following:

      `ParameterKeys.Password` Required during initialization.

      `ParameterKeys.ChangePassword` Required during password change

      `ParameterKeys.Destroy` Optional - If the value is set to `ParameterValues.TRUE` it resets ChipDnaMobile by deleting all data including offline transaction data. This is an irreversible process which will result in the loss of any pending offline transactions.

    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### isInitialized

    public static boolean isInitialized()
    Returns whether ChipDnaMobile has been initialized.
    Returns:
      true if ChipDnaMobile has been initialized, false otherwise.

  - ### dispose

    public static Parameters dispose(Parameters request)
    Disposes of ChipDnaMobile. Resources will be disposed off, database will be closed, PIN pad and printer disconnected and functionality will be disabled. To restore the functionality, ChipDnaMobile will need to be reinitialized after this method is called.

    The use of this method is not required. When the application is closed, resources will be disposed off automatically by Android.

    The method is intended to help managing the application. It can be used when the application goes into the background, if the integrating application needs to carry out the password verification when the application comes back into the foreground.

    If the method is not called when the application goes into the background, ChipDnaMobile functionality will remain accessible once the application comes back into the foreground.

    Parameters:
      `request` - Currently not used and can be null.
    Returns:
      `Parameters` collection containing `ParameterKeys.Result` and if applicable `ParameterKeys.Errors`.

  - ### getInstance

    public static ChipDnaMobile getInstance()
    Gets the instance of ChipDnaMobile. This method should only be called after ChipDnaMobile has been initialised using `initialize(Context, Parameters)` initialize}. `isInitialized()` can be used to check whether ChipDnaMobile has been initialised already.

    ChipDnaMobile utilises the singleton pattern to ensure only one object exists.

    Returns:
      The instance of ChipDnaMobile.
    Throws:
      `ChipDnaMobileInitialisationException` - if the method is called before ChipDnaMobile has been initialised

  - ### getSoftwareName

    public static String getSoftwareName()
    Gets the software name.
    Returns:
      A string representation of the software name.

  - ### getSoftwareVersion

    public static String getSoftwareVersion()
    Gets the software version.
    Returns:
      A string representation of the software version.

  - ### getSoftwareVersionName

    public static String getSoftwareVersionName()
    Get the software version name.
    Returns:
      A string representing the software version name.