-- TFPK MIB

-- { iso org(3) dod(6) internet(1) private(4) enterprises(1) tfpk(41391) tfpkCTOS(1) ecr(1) }

TFPKECR1-MIB DEFINITIONS ::= BEGIN

-- Title        :  TFPK MIB for ECRs with CSEF
-- Date         :  March 6, 2013
-- By           :  Andrey Balakin
-- Note         :  ECRs with CSEF and internal/external communication devices

IMPORTS
	enterprises, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks
		FROM RFC1155-SMI
	DisplayString
		FROM RFC1213-MIB
	TRAP-TYPE
		FROM RFC1215;

tfpk                    OBJECT IDENTIFIER ::= { enterprises 41391 }
tfpkCTOS                OBJECT IDENTIFIER ::= { tfpk 1 }
ecr                     OBJECT IDENTIFIER ::= { tfpkCTOS 1 }

ecrGenInfo              OBJECT IDENTIFIER ::= { ecr 1 }
ecrPower                OBJECT IDENTIFIER ::= { ecr 2 }
ecrModem                OBJECT IDENTIFIER ::= { ecr 3 }
ecrLAN                  OBJECT IDENTIFIER ::= { ecr 4 }
ecrECR                  OBJECT IDENTIFIER ::= { ecr 5 }
ecrACQ                  OBJECT IDENTIFIER ::= { ecr 6 }
ecrCSEF                 OBJECT IDENTIFIER ::= { ecr 7 }
ecrCtl                  OBJECT IDENTIFIER ::= { ecr 8 }

-- The Device General Info group.

  ecrOS_VER OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (2))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "OS version."
      ::= { ecrGenInfo 1 }

  ecrOS_REV OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (2))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "OS revision."
      ::= { ecrGenInfo 2 }

  ecrID_DEV OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (4))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device ID."
      ::= { ecrGenInfo 3 }

  ecrID_DEV_CSEF OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (4))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device ID registered in CSEF."
      ::= { ecrGenInfo 4 }

  ecrID_SAM OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (4))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "ID of used SAM."
      ::= { ecrGenInfo 5 }

  ecrID_SAM_CSEF OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (4))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "ID SAM registered in CSEF."
      ::= { ecrGenInfo 6 }

  ecrDevSN OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device's Serial Number."
      ::= { ecrGenInfo 7 }

  ecrDevWorkState OBJECT-TYPE
      SYNTAX INTEGER {
		     csefNotInited(0),
		     samDevInited(1),
		     samDevRegistered(3),
                     samDevPersonalised(7)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates device's work state."
      ::= { ecrGenInfo 8 }

  ecrPersDateTime OBJECT-TYPE
      SYNTAX DisplayString (SIZE (0|12))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Personalisation date/time in form YYMMDDHHMMSS."
      ::= { ecrGenInfo 9 }

  ecrFailState OBJECT-TYPE
      SYNTAX INTEGER {
			failNone(0),
			failECRInit(1),
			failECRChanged(2),
			failECRInvalidPID(3),
			failECRInvalidData(4),
			failCSEFInit(32),
			failCSEFInvalidRecord(33),
			failCSEFAlloc(34),
			failCSEFWrite(35),
			failCSEFFull(36),
			failSAMInit(64),
			failSAMError(65),
			failSAMOther(66),
			failACQReject(96)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates device's fail state."
      ::= { ecrGenInfo 10 }

  ecrDevDateTime OBJECT-TYPE
      SYNTAX DisplayString (SIZE (0|12))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Current device's date/time in form YYMMDDHHMMSS."
      ::= { ecrGenInfo 11 }

-- The Device's Power state group.

  ecrDevPowerState OBJECT-TYPE
      SYNTAX INTEGER {
		     pwrBattMode(0),
                     pwrExtPwrMode(1),
                     pwrChargeStart(2),
                     pwrCharge(3),
                     pwrBattLow(4),
                     pwrBadTemp(5),
                     pwrCharge1(6),
                     pwrCharge2(7)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates device's power state."
      ::= { ecrPower 1 }

  ecrBattVoltage OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device's battery voltage in millivolt."
      ::= { ecrPower 2 }

  ecrExtPowerVoltage OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device's external power voltage in millivolt."
      ::= { ecrPower 3 }

  ecrBattCurrent OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device's battery current in milliampere."
      ::= { ecrPower 4 }

  ecrIntTemperature OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Device's inside temperature current in degree(C)."
      ::= { ecrPower 5 }

-- The Device's Modem state group.

  ecrModemState OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (3))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates device's modem state (PhysLayer, PPP, IP)."
      ::= { ecrModem 1 }

  ecrModemUSSDResult OBJECT-TYPE
      SYNTAX DisplayString (SIZE (0..32))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates result of predefined USSD request."
      ::= { ecrModem 2 }

  ecrModemRSSI OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Received Signal Strength Indication."
      ::= { ecrModem 3 }

  ecrModemIpAddr OBJECT-TYPE
      SYNTAX IpAddress
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "IP address of Modem interface."
      ::= { ecrModem 4 }

  ecrModemSendBytes OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Total sended bytes."
      ::= { ecrModem 5 }

  ecrModemRecvBytes OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Total received bytes."
      ::= { ecrModem 6 }

-- The LAN state group.
  ecrLANState OBJECT-TYPE
      SYNTAX OCTET STRING (SIZE (2))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates device's LAN state (PhysLayer, DHCP)."
      ::= { ecrLAN 1 }

  ecrLANIpAddr OBJECT-TYPE
      SYNTAX IpAddress
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "IP address of LAN interface."
      ::= { ecrLAN 2 }

-- The ECR state group.

  ecrECRType OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrTypeUnknown(0),
                     ecrWithoutCSEF(1),
                     ecrWithCSEF(2),
                     ecrFiscalPrinter(3),
                     ecrFiscalPrinterForFuel(4)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates ECR type."
      ::= { ecrECR 1 }

  ecrECRType4STA OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrSTATypeRetail(0),
                     ecrSTATypeFuel(1),
                     ecrSTATypeTaxi(2),
                     ecrSTATypeCurrExchg(3)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates ECR type for STA."
      ::= { ecrECR 2 }

  ecrECRId OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrIdUnknown(0),
                     ecrIdDatecsMP5xZ(1),
                     ecrIdICSM500Z(2),
                     ecrIdICSFiscalPrinter(3),
                     ecrIdDatecsMP5xFull(4),
                     ecrIdICSM500Full(5),
                     ecrIdSilexZ(6),
                     ecrIdSilexFull(7),
                     ecrIdMalvaZ(8),
                     ecrIdMalvaFull(9),
                     ecrIdICSSA100(10),
                     ecrIdMOH(11)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates ECR family."
      ::= { ecrECR 3 }

  ecrECRPortBitrate OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrBitRate2400(0),
		     ecrBitRate4800(1),
		     ecrBitRate9600(2),
		     ecrBitRate19200(3),
		     ecrBitRate38400(4),
		     ecrBitRate57600(5),
		     ecrBitRate115200(6)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Indicates ECR port bitrate for external device."
      ::= { ecrECR 4 }

  ecrECRLogNum OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Logical number of ECR for external device."
      ::= { ecrECR 5 }

  ecrECRManufNum OBJECT-TYPE
      SYNTAX DisplayString (SIZE (0..11))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Serial number of ECR."
      ::= { ecrECR 6 }

  ecrECRFiscalNum OBJECT-TYPE
      SYNTAX DisplayString (SIZE (0..13))
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Fiscal number of ECR."
      ::= { ecrECR 7 }

  ecrECRXchgResult OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrECRXchgNoError(0),
		     ecrECRXchgIntErr(1),
		     ecrECRXchgTaskInitErr(2),
		     ecrECRXchgNoPersonalisationErr(3),
		     ecrECRXchgPIDMapErr(4),
		     ecrECRXchgPIDWriteErr(5),
		     ecrECRXchgPIDAllocErr(6),
		     ecrECRXchgPIDReadErr(7),
		     ecrECRXchgNotFiscalMode(8),
		     ecrECRXchgInvState(251),
		     ecrECRXchgBusy(252),
		     ecrECRXchgConflict(253),
		     ecrECRXchgTimeout(254),
		     ecrECRXchgFail(255)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Last result code of exchange with ECR."
      ::= { ecrECR 8 }

  ecrECRXchgLastTime OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Time since last exchange with ECR."
      ::= { ecrECR 9 }

  ecrECRXchgNextTime OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Time to next exchange with ECR."
      ::= { ecrECR 10 }

  ecrECRXchgErrCnt OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Number of erroneous attempts of exchange with ECR."
      ::= { ecrECR 11 }


-- The ACQ state group.

  ecrACQIpAddr OBJECT-TYPE
      SYNTAX IpAddress
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "IP address of acquirer."
      ::= { ecrACQ 1 }

  ecrACQPort OBJECT-TYPE
      SYNTAX INTEGER (0..65535)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "TCP Port of acquirer."
      ::= { ecrACQ 2 }

  ecrACQXchgLastTime OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Time since last exchange with acquirer."
      ::= { ecrACQ 3 }

  ecrACQXchgNextTime OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Time to next exchange with acquirer."
      ::= { ecrACQ 4 }

  ecrACQXchgPeriod OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Period of exchange with acquirer."
      ::= { ecrACQ 5 }

  ecrACQXchgResult OBJECT-TYPE
      SYNTAX INTEGER {
                     ecrACQXchgNoError(0),
                     ecrACQXchgIntErr(1),
                     ecrACQXchgTimeout(2),
                     ecrACQXchgPIDMapErr(3),
                     ecrACQXchgPIDReadErr(4),
                     ecrACQXchgPIDWriteErr(5),
                     ecrACQXchgRespLenErr(6),
                     ecrACQXchgRespTlgIDErr(7),
                     ecrACQXchgRespMACErr(8),
                     ecrACQXchgSAMBusy(9),
                     ecrACQXchgCnctErr(240),
                     ecrACQXchgReject(241),
                     ecrACQXchgCnctIntErr(242),
                     ecrACQXchgCnctTimeout(243),
                     ecrACQXchgCnctClosed(244),
                     ecrACQXchgCnctBadResp(245),
                     ecrACQXchgCnctErrRetryOver(246),
                     ecrACQXchgCnctBreakRcvd(247)
                     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Result of last exchange with acquirer."
      ::= { ecrACQ 6 }

  ecrACQLockTime OBJECT-TYPE
      SYNTAX TimeTicks
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Time of wait for send packet to acquirer."
      ::= { ecrACQ 7 }


  ecrACQTaskTable OBJECT-TYPE
      SYNTAX SEQUENCE OF EcrACQTaskEntry
      ACCESS not-accessible
      STATUS current
      DESCRIPTION
            "The table of STA tasks for data resend."
      ::= { ecrACQ 8}

  ecrACQTaskEntry OBJECT-TYPE
    SYNTAX   EcrACQTaskEntry
    ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
            "Task entry."
    INDEX    { ecrACQTaskIndex }
    ::= { ecrACQTaskTable 1 }

  EcrACQTaskEntry ::= SEQUENCE {
                                ecrACQTaskIndex    INTEGER,
                                ecrACQTaskID       INTEGER,
                                ecrACQTaskType     INTEGER,
                                ecrACQTaskFirst    INTEGER,
                                ecrACQTaskNum      INTEGER
                               }

  ecrACQTaskIndex OBJECT-TYPE
    SYNTAX   INTEGER (0..255)
    ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
            "The index of a task."
    ::= { ecrACQTaskEntry 1 }

  ecrACQTaskID OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Task ID."
      ::= { ecrACQTaskEntry 2 }

  ecrACQTaskType OBJECT-TYPE
      SYNTAX INTEGER {
                     ecrACQTaskUnusedEntry(0),
                     ecrACQTaskZReport(1),
                     ecrACQTaskAllPacket(2)
                     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Result of last exchange with acquirer."
      ::= { ecrACQTaskEntry 3 }

  ecrACQTaskFirst OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "First PID or Z-report number."
      ::= { ecrACQTaskEntry 4 }

  ecrACQTaskNum OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Number of packet for resend."
      ::= { ecrACQTaskEntry 5 }

-- ecrCSEF

  ecrCSEFWritePID OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Last writed PID."
      ::= { ecrCSEF 1 }

  ecrCSEFSendPID OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Last sended PID."
      ::= { ecrCSEF 2 }

  ecrCSEFPIDTable OBJECT-TYPE
      SYNTAX SEQUENCE OF EcrCSEFPIDEntry
      ACCESS not-accessible
      STATUS current
      DESCRIPTION
            "The table of PID values."
      ::= { ecrCSEF 3 }

  ecrCSEFPIDEntry OBJECT-TYPE
    SYNTAX   EcrCSEFPIDEntry
    ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
            "PID values."
    INDEX    { ecrPIDIndex }
    ::= { ecrCSEFPIDTable 1 }

  EcrCSEFPIDEntry ::= SEQUENCE {
                                ecrPIDIndex     INTEGER,
                                ecrPIDType      INTEGER,
                                ecrPIDValue     INTEGER
                               }

  ecrPIDIndex OBJECT-TYPE
    SYNTAX   INTEGER (0..255)
    ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
            "The index of a PID value."
    ::= { ecrCSEFPIDEntry 1 }

  ecrPIDType OBJECT-TYPE
      SYNTAX INTEGER {
		     ecrPIDFirstUnused(0),
		     ecrPIDCurrentPersonalisation(1),
		     ecrPIDLastSaved(2),
		     ecrPIDLastSavedZRprt(3),
		     ecrPIDLastSigned(4),
		     ecrPIDLastSignedZRprt(5),
		     ecrPIDLastSended(6),
		     ecrPIDLastSendedZRprt(7),
		     ecrPIDLastSendAck(8),
		     ecrPIDLastSendAckZRprt(9)
		     }
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Type of PID."
      ::= { ecrCSEFPIDEntry 2 }

  ecrPIDValue OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "PID value."
      ::= { ecrCSEFPIDEntry 3 }

  ecrCSEFMaxPID OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Max available PID."
      ::= { ecrCSEF 4 }

  ecrCSEFFreeSectNum OBJECT-TYPE
      SYNTAX INTEGER (0..4294967295)
      ACCESS read-only
      STATUS current
      DESCRIPTION
	      "Free sectors on CSEF."
      ::= { ecrCSEF 5 }

-- ecrCtl

  ecrCtlStartACQXchg OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-write
      STATUS current
      DESCRIPTION
	      "Start exchange with acquirer after xx second."
      ::= { ecrCtl 1 }

  ecrCtlStartECRXchg OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-write
      STATUS current
      DESCRIPTION
	      "Start exchange with ECR after xx second."
      ::= { ecrCtl 2 }

  ecrCtlShutdown OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-write
      STATUS current
      DESCRIPTION
	      "Shutdown device after xx second if external power is absent."
      ::= { ecrCtl 3 }

  ecrCtlACQTaskDelete OBJECT-TYPE
      SYNTAX INTEGER (0..255)
      ACCESS read-write
      STATUS current
      DESCRIPTION
	      "Delete task with ID xx."
      ::= { ecrCtl 4 }

-- traps

  ecrTrapModemLink TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrModemIpAddr }
      DESCRIPTION
	      "Modem interface is UP."
      ::= 1

  ecrTrapLANLink TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrLANIpAddr }
      DESCRIPTION
	      "LAN interface is UP."
      ::= 2

  ecrTrapPIDWrite TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrCSEFWritePID }
      DESCRIPTION
	      "New PID saved to CSEF."
      ::= 3

  ecrTrapPIDSend TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrCSEFSendPID }
      DESCRIPTION
	      "PID sended to acquirer."
      ::= 4

  ecrTrapPwrMode TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrDevPowerState, ecrBattVoltage, ecrExtPowerVoltage }
      DESCRIPTION
	      "Power mode is changed."
      ::= 5

  ecrTrapDevFail TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrFailState }
      DESCRIPTION
	      "Device failed."
      ::= 6

  ecrTrapECRLink TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrECRXchgResult }
      DESCRIPTION
	      "State of link to ECR is changed."
      ::= 7

  ecrTrapACQLink TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrACQXchgResult }
      DESCRIPTION
	      "State of link to acquirer is changed."
      ::= 8

  ecrTrapPeriodic TRAP-TYPE
      ENTERPRISE tfpk
      VARIABLES  { ecrECRXchgResult, ecrACQLockTime, ecrCSEFWritePID, ecrCSEFSendPID }
      DESCRIPTION
	      "Periodic trap."
      ::= 64


   END
