llrp

package
v0.0.0-...-fc64ab1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2019 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NETW_LOSS = iota
	NETW_CONNECTED
)
View Source
const (
	DefaultSubPendingMsgsLimit  = 65536
	DefaultSubPendingBytesLimit = 65536 * 1024
)

Pending Limits

View Source
const (
	BufferSize = 512

	DefaultMaxReconnect  = 1060
	DefaultReconnectWait = 30 * time.Second
	DefaultTimeout       = 30 * time.Second
	DefaultPingInterval  = 30 * time.Second
)
View Source
const (
	DISCONNECTED = Status(iota)
	CONNECTED
	CLOSED
	RECONNECTING
	CONNECTING
)
View Source
const (
	DefaultPort             = 5084
	DefaultMaxPingOut       = 2
	DefaultMaxChanLen       = 8192            // 8k
	DefaultReconnectBufSize = 8 * 1024 * 1024 // 8MB
	RequestChanLen          = 8
)

Default Constants

View Source
const (
	M_RESEVED                          = 0x04
	M_GET_SUPPORTED_VERSION            = 46
	M_GET_SUPPORTED_VERSION_RESPONSE   = 56
	M_SET_PROTOCOL_VERSION             = 47
	M_SET_PROTOCOL_VERSION_RESPONSE    = 57
	M_GET_READER_CAPABILITIES          = 1
	M_GET_READER_CAPABILITIES_RESPONSE = 11
	M_ADD_ROSPEC                       = 20
	M_ADD_ROSPEC_RESPONSE              = 30
	M_DELETE_ROSPEC                    = 21
	M_DELETE_ROSPEC_RESPONSE           = 31
	M_START_ROSPEC                     = 22
	M_START_ROSPEC_RESPONSE            = 32
	M_STOP_ROSPEC                      = 23
	M_STOP_ROSPEC_RESPONSE             = 33
	M_ENABLE_ROSPEC                    = 24
	M_ENABLE_ROSPEC_RESPONSE           = 34
	M_DISABLE_ROSPEC                   = 25
	M_DISABLE_ROSPEC_RESPONSE          = 35
	M_GET_ROSPECS                      = 26
	M_GET_ROSPECS_RESPONSE             = 36
	M_ADD_ACCESSSPEC                   = 40
	M_ADD_ACCESSSPEC_RESPONSE          = 50
	M_DELETE_ACCESSSPEC                = 41
	M_DELETE_ACCESSSPEC_RESPONSE       = 51
	M_ENABLE_ACCESSSPEC                = 42
	M_ENABLE_ACCESSSPEC_RESPONSE       = 52
	M_DISABLE_ACCESSSPEC               = 43
	M_DISABLE_ACCESSSPEC_RESPONSE      = 53
	M_GET_ACCESSSPECS                  = 44
	M_GET_ACCESSSPECS_RESPONSE         = 54
	M_CLIENT_REQUEST_OP                = 45
	M_CLIENT_REQUEST_OP_RESPONSE       = 55
	M_GET_REPORT                       = 60
	M_RO_ACCESS_REPORT                 = 61
	M_KEEPALIVE                        = 62
	M_KEEPALIVE_ACK                    = 72
	M_READER_EVENT_NOTIFICATION        = 63
	M_ENABLE_EVENTS_AND_REPORTS        = 64
	M_ERROR_MESSAGE                    = 100
	M_GET_READER_CONFIG                = 2
	M_GET_READER_CONFIG_RESPONSE       = 12
	M_SET_READER_CONFIG                = 3
	M_SET_READER_CONFIG_RESPONSE       = 13
	M_CLOSE_CONNECTION                 = 14
	M_CLOSE_CONNECTION_RESPONSE        = 4
	M_CUSTOM_MESSAGE                   = 1023
)
View Source
const (
	C_ROSpec_CurrentState_Disabled = iota
	C_ROSpec_CurrentState_Inactive
	C_ROSpec_CurrentState_Active
)
View Source
const (
	P_UTCTimeStamp                                = 128
	P_Uptime                                      = 129
	P_GeneralDeviceCapabilities                   = 137
	P_MaximumReceiveSensitivity                   = 363
	P_ReceiveSensitivityTableEntry                = 139
	P_PerAntennaAirProtocol                       = 140
	P_GPIOCapabilities                            = 141
	P_LLRPCapabilities                            = 142
	P_RegulatoryCapabilities                      = 143
	P_UHFBandCapabilities                         = 144
	P_TransmitPowerLevelTableEntry                = 145
	P_FrequencyInformation                        = 146
	P_FrequencyHopTable                           = 147
	P_FixedFrequencyTable                         = 148
	P_PerAntennaReceiveSensitivityRange           = 149
	P_RFSurveyFrequencyCapabilities               = 365
	P_ROSpec                                      = 177
	P_ROBoundarySpec                              = 178
	P_ROSpecStartTrigger                          = 179
	P_PeriodicTriggerValue                        = 180
	P_GPITriggerValue                             = 181
	P_ROSpecStopTrigger                           = 182
	P_AISpec                                      = 183
	P_AISpecStopTrigger                           = 184
	P_TagObservationTrigger                       = 185
	P_InventoryParameterSpec                      = 186
	P_RFSurveySpec                                = 187
	P_RFSurveySpecStopTrigger                     = 188
	P_LoopSpec                                    = 355
	P_AccessSpec                                  = 207
	P_AccessSpecStopTrigger                       = 208
	P_AccessCommand                               = 209
	P_ClientRequestOpSpec                         = 210
	P_ClientRequestResponse                       = 211
	P_LLRPConfigurationStateValue                 = 217
	P_Identification                              = 218
	P_GPOWriteData                                = 219
	P_KeepaliveSpec                               = 220
	P_AntennaProperties                           = 221
	P_AntennaConfiguration                        = 222
	P_RFReceiver                                  = 223
	P_RFTransmitter                               = 224
	P_GPIPortCurrentState                         = 225
	P_EventsAndReports                            = 226
	P_ROReportSpec                                = 237
	P_TagReportContentSelector                    = 238
	P_AccessReportSpec                            = 239
	P_TagReportData                               = 240
	P_EPCData                                     = 241
	P_EPC_96                                      = 13
	P_ROSpecID                                    = 9
	P_SpecIndex                                   = 14
	P_InventoryParameterSpecID                    = 10
	P_AntennaID                                   = 1
	P_PeakRSSI                                    = 6
	P_ChannelIndex                                = 7
	P_FirstSeenTimestampUTC                       = 2
	P_FirstSeenTimestampUptime                    = 3
	P_LastSeenTimestampUTC                        = 4
	P_LastSeenTimestampUptim                      = 5
	P_TagSeenCount                                = 8
	P_ClientRequestOpSpecResult                   = 15
	P_AccessSpecID                                = 16
	P_RFSurveyReportData                          = 242
	P_FrequencyRSSILevelEntry                     = 243
	P_ReaderEventNotificationSpec                 = 244
	P_EventNotificationState                      = 245
	P_ReaderEventNotificationData                 = 246
	P_HoppingEvent                                = 247
	P_GPIEvent                                    = 248
	P_ROSpecEvent                                 = 249
	P_ReportBufferLevelWarningEvent               = 250
	P_ReportBufferOverflowErrorEvent              = 251
	P_ReaderExceptionEvent                        = 252
	P_OpSpecID                                    = 17
	P_RFSurveyEvent                               = 253
	P_AISpecEvent                                 = 254
	P_AntennaEvent                                = 255
	P_ConnectionAttemptEvent                      = 256
	P_ConnectionCloseEvent                        = 257
	P_SpecLoopEvent                               = 356
	P_LLRPStatus                                  = 287
	P_FieldError                                  = 288
	P_ParameterError                              = 289
	P_Custom                                      = 1023
	P_C1G2LLRPCapabilities                        = 327
	P_UHFC1G2RFModeTable                          = 328
	P_UHFC1G2RFModeTableEntry                     = 329
	P_C1G2InventoryCommand                        = 330
	P_C1G2Filter                                  = 331
	P_C1G2TagInventoryMask                        = 332
	P_C1G2TagInventoryStateAwareFilterAction      = 333
	P_C1G2TagInventoryStateUnawareFilterAction    = 334
	P_C1G2RFControl                               = 335
	P_C1G2SingulationControl                      = 336
	P_C1G2TagInventoryStateAwareSingulationAction = 337
	P_C1G2TagSpec                                 = 338
	P_C1G2TargetTag                               = 339
	P_C1G2Read                                    = 341
	P_C1G2Write                                   = 342
	P_C1G2Kill                                    = 343
	P_C1G2Recommission                            = 357
	P_C1G2Lock                                    = 344
	P_C1G2LockPayload                             = 345
	P_C1G2BlockErase                              = 346
	P_C1G2BlockWrite                              = 347
	P_C1G2BlockPermalock                          = 358
	P_C1G2GetBlockPermalockStatus                 = 359
	P_C1G2EPCMemorySelector                       = 348
	P_C1G2PC                                      = 12
	P_C1G2XPCW1                                   = 19
	P_C1G2XPCW2                                   = 20
	P_C1G2CRC                                     = 11
	P_C1G2SingulationDetails                      = 18
	P_C1G2ReadOpSpecResult                        = 349
	P_C1G2WriteOpSpecResult                       = 350
	P_C1G2KillOpSpecResult                        = 351
	P_C1G2RecommissionOpSpecResult                = 360
	P_C1G2LockOpSpecResult                        = 352
	P_C1G2BlockEraseOpSpecResult                  = 353
	P_C1G2BlockWriteOpSpecResult                  = 354
	P_C1G2BlockPermalockOpSpecResult              = 361
	P_C1G2GetBlockPermalockStatusOpSpecResult     = 362
)
View Source
const (
	C_Identification_IDType_MAC = iota
	C_Identification_IDType_EPC
)

IDType used by Identification Parameter

View Source
const (
	C_AISpecStopTrigger_NULL = iota
	C_AISpecStopTrigger_DURATION
	C_AISpecStopTrigger_GPI_WITH_TIMEOUT
	C_AISpecStopTrigger_TAG_OBSERVATION
)
View Source
const (
	C_RFSurveySpecStopTrigger_NULL = iota
	C_RFSurveySpecStopTrigger_Duration
	C_RFSurveySpecStopTrigger_N_Iteration
)

RFSurveySpecStopTrigger Type

View Source
const (
	C_ROReportTrigger_None = iota
	C_ROReportTrigger_Upon_N_TagReportData_or_EndOfAISpec
	C_ROReportTrigger_Upon_N_TagReportData_or_EndOfROSpec
	C_ROReportTrigger_Upon_N_Seconds_or_EndAISpec_EndROSpec
	C_ROReportTrigger_Upon_N_Seconds_or_EndROSpec
	C_ROReportTrigger_Upon
	C_ROReportTrigger_Upon_N_milliseconds_or_EndROSpec_EndRFSurveyspec
	C_ROReportTrigger_Upon_N_milliseconds_or_EndROSpec
)

N = 0 is unlimited ROReportTrigger type

View Source
const (
	C_AccessReportTrigger_GenTriggerd = iota
	C_AccessReportTrigger_EndOfAcessSpec
)

AccessReportTrigger

0 : Whenever ROReport is generated for the RO that triggered the execution of this AccessSpec.
1 : End of AccessSpec (immediately upon completionof the access operation)
View Source
const (
	C_AntennaEventParameter_Antenna_Disconnected = iota
	C_AntennaEventParameter_Antenna_Connected
)
View Source
const (
	C_ConnectionAttemptEvent_Status_Success = iota
	C_ConnectionAttemptEvent_Status_Failed_Reader_Conn_Exists
	C_ConnectionAttemptEvent_Status_Failed_Client_Conn_Exists
	C_ConnectionAttemptEvent_Status_Another_Conn_Attempted
)
View Source
const (
	C_ROSpecEvent_Type_Start_ROSpec = iota
	C_ROSpecEvent_Type_End_ROSpec
	C_ROSpecEvent_Type_Preemption_ROSpec
)
View Source
const (
	V_1011_All = iota
	V_1011_General_Device_Capabilities
	V_1011_LLRP_Capabilities
	V_1011_Regulatory_Capabilities
	V_1011_Air_Protocol_LLRP_Capabilities
)
View Source
const (
	C_GET_READER_CONFIG_All = iota
	C_GET_READER_CONFIG_Identification
	C_GET_READER_CONFIG_AntennaProperties
	C_GET_READER_CONFIG_AntennaConfiguration
	C_GET_READER_CONFIG_ROReportSpec
	C_GET_READER_CONFIG_ReaderEventNotificationSpec
	C_GET_READER_CONFIG_AccessReportSpec
	C_GET_READER_CONFIG_LLRPConfigurationStateValue
	C_GET_READER_CONFIG_KeepaliveSpec
	C_GET_READER_CONFIG_GPIPortCurrentState
	C_GET_READER_CONFIG_GPOWriteData
	C_GET_READER_CONFIG_EventsAndReports
)
View Source
const (
	// LLRPStatus StatusCode
	// message scope
	M_Success        = 0
	M_ParameterError = 100 + iota
	M_FieldError
	M_UnexpectedParameter
	M_MissingParameter
	M_DuplicateParameter
	M_OverflowParameter
	M_OverflowField
	M_UnknownParameter
	M_UnknownField
	M_UnsupportedMessage
	M_UnsupportedVersion
	M_UnsupportedParameter
	M_UnexpectedMessage
)
View Source
const (
	// parameter
	P_ParameterError_Scope = 200 + iota
	P_FieldError_Scope
	P_UnexpectedParameter
	P_MissingParameter
	P_DuplicateParamete
	P_OverflowParameter
	P_OverflowField
	P_UnknownParameter
	P_UnknownField
	P_UnsupportedParameter
)
View Source
const (
	// field
	A_Invalid = 300 + iota
	A_OutOfRange
)
View Source
const (
	// reader
	R_DeviceError = 401
)

Variables

View Source
var (
	ErrConnectionClosed     = errors.New("llrp: connection closed")
	ErrSecureConnRequired   = errors.New("llrp: secure connection required")
	ErrSecureConnWanted     = errors.New("llrp: secure connection not available")
	ErrBadSubscription      = errors.New("llrp: invalid subscription")
	ErrTypeSubscription     = errors.New("llrp: invalid subscription type")
	ErrBadSubject           = errors.New("llrp: invalid subject")
	ErrSlowConsumer         = errors.New("llrp: slow consumer, messages dropped")
	ErrTimeout              = errors.New("llrp: timeout")
	ErrBadTimeout           = errors.New("llrp: timeout invalid")
	ErrNoServers            = errors.New("llrp: no readers available for connection")
	ErrJsonParse            = errors.New("llrp: connect message, json parse error")
	ErrChanArg              = errors.New("llrp: argument needs to be a channel type")
	ErrMaxPayload           = errors.New("llrp: maximum payload exceeded")
	ErrMaxMessages          = errors.New("llrp: maximum messages delivered")
	ErrSyncSubRequired      = errors.New("llrp: illegal call on an async subscription")
	ErrMultipleTLSConfigs   = errors.New("llrp: multiple tls.Configs not allowed")
	ErrNoInfoReceived       = errors.New("llrp: protocol exception, INFO not received")
	ErrReconnectBufExceeded = errors.New("llrp: outbound buffer limit exceeded")
	ErrInvalidConnection    = errors.New("llrp: invalid connection")
	ErrInvalidMsg           = errors.New("llrp: invalid message or message nil")
	ErrInvalidArg           = errors.New("llrp: invalid argument")
	ErrInvalidContext       = errors.New("llrp: invalid context")
)

Errors

Functions

func ADD_ACCESSSPEC

func ADD_ACCESSSPEC(messageId int, params ...[]interface{}) []byte

* This command creates a new AccessSpec at the Reader. The AccessSpec starts at the Disabled state waiting for the ENABLE_ACCESSSPEC message for the AccessSpec from the Client, upon which it transitions to the Active state. The AccessSpecID is generated by the Client.

func ADD_ROSPEC

func ADD_ROSPEC(messageId int, params ...[]interface{}) []byte

func AISpec

func AISpec(AntennaCount int, AntennaIDn []int, params ...[]interface{}) []interface{}

params = AISpecStopTrigger , InventoryParameter Spec and Custom Parameter

func AISpecStopTrigger

func AISpecStopTrigger(AISpecStopTriggerType, DurationTrigger int, params ...[]interface{}) []interface{}

params = GPITriggerValue Parameter , TagObservationTrigger Parameter

func AccessCommand

func AccessCommand(params ...[]interface{}) []interface{}

* This parameter defines the air protocol access-specific settings. It contains a TagSpec and an OpSpec Parameter. The TagSpec specifies the tag filters in terms of air protocol specific memory capabilities (e.g., memory banks, pointer and length). The OpSpec specifies all the details of the operations required for the air protocol specific access operation commands. * *Compliance requirement: Compliant Readers and Clients SHALL implement this parameter. * Notes - TagSpecParameter is the air protocol specific tag spec parameter. For C1G2, it is C1G2TagSpec Parameter.

func AccessCommand(TagSpec,OpSpec []interface{}) []interface{} {

func AccessReportSpec

func AccessReportSpec(AccessReportTrigger uint) []interface{}

func AccessSpec

func AccessSpec(AntennaID, ProtocolID, uint, CurrentState int, ROSpecID uint, params ...[]interface{}) []interface{}

* This parameter carries information of the Reader access operation.

func AccessSpecStopTrigger

func AccessSpecStopTrigger(AccessSpecStopTriggerType, OperationCountValue uint) []interface{}

/ Compliance requirement: Compliant Readers and Clients SHALL implement this parameter.

func AddROSpecCustom

func AddROSpecCustom(messageId, ROSpecID, Priority, CurrentState int, spec ...[]interface{}) []byte

This parameter carries the information of the Reader inventory and survey operation. ROSpecID: Unsigned Integer; 0 is an illegal ROSpecID for a ROSpec. Priority: Integer. Lower numbered priority values are given higher priority. Possible Values: 0-7. CurrentState: Integer ---------- ROBoundarySpec: ROBoundarySpec Parameter ListOfSpecs: List of LLRP Parameters Possible Values: Each parameter can be either an <AISpec Parameter>, a <RFSurveySpec Parameter>, a <LoopSpec Parameter>, or a Custom Parameter. ROReportSpec: ROReportSpec Parameter

func AddROSpecOptionDefault

func AddROSpecOptionDefault() []byte

func AntennaConfiguration

func AntennaConfiguration(AntennaID int, params ...[]interface{}) []interface{}
This parameter carries a single antenna's configuration and it specifies the default values for the parameter set that are passed in this parameter block. The scope of the default values is the antenna. The default values are used for parameters during an operation on this antenna if the parameter was unspecified in the spec that describes the operation.

params = RFReceiver Parameter , RFTransmitter Parameter , AirProtocolInventoryCommandSettings Parameter , Custom Parameter

func AntennaProperties

func AntennaProperties(AntennaID, AntennaGain int, AntennaConnected bool) []interface{}

This parameter carries a single antenna's properties. The properties include the gain and the connectivity status of the antenna.The antenna gain is the composite gain and includes the loss of the associated cable from the Reader to the antenna. The gain is represented in dBi*100 to allow fractional dBi representation.

func C1G2InventoryCommand

func C1G2InventoryCommand(TagInventoryStateAware bool, params ...[]interface{}) []interface{}

This parameter defines the C1G2 inventory-specific settings to be used during a particular C1G2 inventory operation. This comprises of C1G2Filter Parameter, C1G2RF Parameter and C1G2Singulation Parameter. It is not necessary that the Filter, RF Control and Singulation Control Parameters be specified in each and every inventory command.They are optional parameters. If not specified, the default values in the Reader are used during the inventory operation. If multiple C1G2Filter parameters are encapsulated by the Client in the C1G2InventoryCommand parameter, the ordering of the filter parameters determine the order of C1G2 air-protocol commands (e.g., Select command) generated by the Reader. C1G2Filter parameters included in the C1G2InventoryCommand parameter

func C1G2RFControl

func C1G2RFControl(ModeIndex, Tari int) []interface{}

This Parameter carries the settings relevant to RF forward and reverse link control in the C1G2 air protocol. This is basically the C1G2 RF Mode and the Tari value to use for the inventory operation.

---
ModeIndex: Unsigned Integer. This is an index into the UHFC1G2RFModeTable.
Tari: Integer. Value of Tari to use for this mode specified in nsec. This is specified if the mode selected has a Tari range. If the selected mode has a range, and the Tari is set to zero, the Reader implementation picks up any Tari value within the range. If the selected mode has a range, and the specified Tari is out of that range and is not set to zero, an error message is generated.
Possible Values:
0 or 6250-25000 nsec

func C1G2SingulationControl

func C1G2SingulationControl(Session, TagPopulation, TagTransitTime int, params ...[]interface{}) []interface{}

This C1G2SingulationControl Parameter provides controls particular to the singulation process in the C1G2 air protocol. The singulation process is started using a Query command in the C1G2 protocol. The Query command describes the session number, tag state, the start Q value to use, and the RF link parameters. The RF link parameters are specified using the C1G2RFControl Parameter (see section 16.2.1.2.1.2). This Singulation Parameter specifies the session, tag state and description of the target singulation environment

Session: Integer. Session number to use for the inventory operation.
Possible Values: 0-3
Tag population: Unsigned Short Integer. An estimate of the tag population in view of the RF field of the antenna.
Tag transit time: Unsigned Integer. An estimate of the time a tag will typically remain in the RF field of the antenna specified in milliseconds.
TagInventoryStateAwareSingulationAction: <C1G2TagInventoryStateAwareSingulationAction Parameter> (optional)
params = C1G2TagInventoryStateAwareSingulationAction

func C1G2TagSpec

func C1G2TagSpec(params ...[]interface{}) []interface{}

* This parameter describes the target tag population on which certain operations have to be performed. This Parameter is similar to the selection C1G2Filter Parameter described earlier. However, because these tags are stored in the Reader's memory and ternary comparisons are to be allowed for, each bit i in the target tag is represented using 2 bits - bit i in mask, and bit i in tag pattern. If bit i in the mask is zero, then bit i of the target tag is a don’t care (X); if bit i in the mask is one, then bit i of the target tag is bit i of the tag pattern. For example, “all tags” is specified using a mask length of zero.

func C1G2TargetTag

func C1G2TargetTag(MB, Pointer, MaskBitCount uint, TagMask []uint8, TagData []uint, Match int) []interface{}

* * If Length is zero, this pattern will match all tags regardless of MB, pointer, mask and data.

func CLOSE_CONNECTION

func CLOSE_CONNECTION(messageId int) []byte

This command is issued by the Client to the Reader. This command instructs the Reader to gracefully close its connection with the Client. Under normal operating conditions, a Client SHALL attempt to send this command before closing an LLRP connection

func CustomPack

func CustomPack(messageType, messageId int, config []interface{}, params ...[]interface{}) []byte

Convert custom pack to protocol []byte

func CustomParameter

func CustomParameter(VendorID, SubType int, params ...interface{}) []interface{}

func DEL_ROSPEC

func DEL_ROSPEC(messageId, spec int) []byte

func DISABLE_ROSPEC

func DISABLE_ROSPEC(messageId, ROSpecID int) []byte

This message is issued by the Client to the Reader. Upon receiving the message, the Reader moves the ROSpec corresponding to the ROSpecID passed in this message to the disabled state.

func DelAccOption

func DelAccOption() []byte

func DelROSpecOpt

func DelROSpecOpt() []byte

func ENABLE_EVENTS_AND_REPORTS

func ENABLE_EVENTS_AND_REPORTS(messageId int) []byte

This message can be issued by the Client to the Reader after a LLRP connection is established. The Client uses this message to inform the Reader that it can remove its hold on event and report messages. Readers that are configured to hold events and reports on reconnection (See Section 13.2.6.4) respond to this message by returning the tag reports accumulated (same way they respond to GET_REPORT (See Section 13.1.1)).

func ENABLE_ROSPEC

func ENABLE_ROSPEC(messageId, ROSpecID int) []byte

This message is issued by the Client to the Reader. Upon receiving the message, the Reader moves the ROSpec corresponding to the ROSpecID passed in this message from the disabled to the inactive state.

func EventNotificationStateParam

func EventNotificationStateParam(EventType int, NotificationState bool) []interface{}

This parameter is used to enable or disable notification of a single Reader event type.

func EventsAndReports

func EventsAndReports(HoldEventsAndReportsUponReconnect bool) []interface{}

This parameter controls the behavior of the Reader when a new LLRP connection is established. In a SET_READER_CONFIG message, this parameter is used to enable or disable the holding of events and reports upon connection using the HoldEventsAndReportsUponReconnect field. In a GET_READER_CONFIG message,this parameter reports the current configuration. If the ldEventsAndReportsUponReconnect is true, the reader will not deliver any reports or events (except the ConnectionAttemptEvent) to the Client until the Client issues an ENABLE_EVENTS_AND_REPORTS message. Once the ENABLE_EVENTS_AND_REPORTS message is received the reader ceases its hold on events and reports for the duration of the connection.

func ExtensionOption

func ExtensionOption(params ...int) []byte

vendor , subtype , reserve

func GET_READER_CAPABILITIES_V1011

func GET_READER_CAPABILITIES_V1011(messageId, v_1011 int) []byte

func GET_READER_CONFIG

func GET_READER_CONFIG(messageId, AntennaID, C_TYPE, GPIPortNum, GPOPortNum int) []byte

func GET_REPORT

func GET_REPORT(messageId int) []byte

This message is issued by the Client to the Reader to get the tag reports. In response to this message, the Reader SHALL return tag reports accumulated. If no reports are available to send as a response to a GET_REPORT message, the Reader MAY return an empty RO_ACCESS_REPORT message.

func GPIPortCurrentState

func GPIPortCurrentState(GPIPortNum, GPIState int, GPIConfig bool) []interface{}

This Parameter carries the current configuration and state of a single GPI port. In a SET_READER_CONFIG message, this parameter is used to enable or disable the GPI port using the GPIConfig field; the GPIState field is ignored by the reader. In a GET_READER_CONFIG message, this parameter reports both the configuration and state of the GPI port. When a ROSpec or AISpec is configured on a GPI-capable reader with GPI start and/or stop triggers, those GPIs must be enabled by the client with a SET_READER_CONFIG message for the triggers to function.

func GPITriggerValue

func GPITriggerValue(GPIPortNum int, GPIEvent bool, Timeout int) []interface{}

func GPOWriteDataFunc

func GPOWriteDataFunc(GPOPortNumber int, GPOData bool) []interface{}

This parameter carries the data pertinent to perform the write to a general purpose output port.

GPO Port Number : Unsigned Short Integer. 0 is invalid.
GPO Data: Boolean. The state to output on the specified GPO port.

func GetDefaultAISpec

func GetDefaultAISpec() []interface{}

func GetRoReportSpec

func GetRoReportSpec() []interface{}

func Identification

func Identification(IDType int, ReaderId string) []interface{}

Reader ID: Byte array. If IDType=0, the MAC address SHALL be encoded as EUI-64.[EUI64]

func InventoryParameterSpec

func InventoryParameterSpec(InventoryParameterSpecID, ProtocolID int, params ...[]interface{}) []interface{}

Operational parameters for an inventory using a single air protocol. params = AntennaConfigurationParameter , Custom Parameter

func KeepaliveSpec

func KeepaliveSpec(PeriodicTriggerValue time.Duration) []interface{}

This parameter carries the specification for the keepalive message generation by the Reader. This includes the definition of the periodic trigger to send the keepalive message PeriodicTriggerValue: Integer. Time interval in milliseconds. This field is ignored when KeepaliveTriggerType is not 1.

func LLRPConfigurationStateValue

func LLRPConfigurationStateValue(llrpConfigurationStateValue int) []interface{}

This parameter, LLRPConfigurationStateValue, is a 32-bit value which represents a Reader’s entire LLRP configuration state including: LLRP configuration parameters, vendor extension configuration parameters, ROSpecs, and AccessSpecs. A Reader SHALL change this value only:

  • Upon successful execution of any of the following messages: o ADD_ROSPEC o DELETE_ROSPEC o ADD_ACCESSSPEC o DELETE_ACCESSSPEC o SET_READER_CONFIG o Any CUSTOM_MESSAGE command that alters the reader’s internal configuration.
  • Upon an automatically deleted AccessSpec due to OperationCountValue number of operations (Section 12.2.1.1).

A Reader SHALL not change this value when the CurrentState of a ROSpec or AccessSpec changes. The mechanism used to compute the LLRP configuration state value is implementation dependent. However, a good implementation will insure that there’s a high probability that the value will change when the Reader’s configuration state changes. It is expected that a Client will configure the Reader and then request the Reader’s configuration state value. The Client will then save this state value. If this value does not change between two requests for it, then a Client may assume that the above components of the LLRP configuration have also not changed.

func LoopSpec

func LoopSpec(LoopCount int) []interface{}

Instructs the Reader to execute the first Spec in the Set of Specs. LoopCount: This value instructs the reader on the number of times to loop through the Set of Specs within the ROSpec

func PeriodicTriggerValue

func PeriodicTriggerValue(Offset, Period int, params ...interface{}) []interface{}

UTCTimestamp Parameter

func PeriodicTriggerValueParam

func PeriodicTriggerValueParam(offset, period uint32, utc []interface{}) []interface{}

Periodic trigger is specified using UTC time, offset and period

func RFReceiver

func RFReceiver(TransmitPower, HopTableID, ChannelIndex int) []interface{}

This Parameter carries the RF transmitter information. The Transmit Power defines the transmit power for the antenna expressed as an index into the TransmitPowerTable (section 10.2.4.1.1). The HopTableID is the index of the frequency hop table to be used by the Reader (section 10.2.4.1.2.1) and is used when operating in frequency-hopping regulatory regions. This field is ignored in non-frequency-hopping regulatory regions. The ChannelIndex is the one-based channel index in the FixedFrequencyTable to use during transmission (section 10.2.4.1.2.2) and is used when operating in non-frequency-hopping regulatory regions. This field is ignored in frequency-hopping regulatory regions.

func RFSurveySpec

func RFSurveySpec(AntennaID, StartFrequency, EndFrequency int, params ...[]interface{}) []interface{}

Details of a RF Survey operation params = RFSurveySpecStopTrigger , Custom Parameter

func RFSurveySpecStopTrigger

func RFSurveySpecStopTrigger(StopTriggerType, Duration, N int) []interface{}

Duration: Unsigned Integer; The maximum duration of the RFSurvey operation specified in milliseconds. This field SHALL be ignored when StopTriggerType != 1. When StopTriggerType = 1, the value SHALL be greater than zero. N: Unsigned Integer. The maximum number of iterations through the specified frequency range. This field SHALL be ignored when StopTriggerType != 2. When StopTriggerType = 2, the value SHALL be greater than zero.

func RFTransmitter

func RFTransmitter(HopTableID, ChannelIndex, TransmitPower int) []interface{}

This Parameter carries the RF transmitter information. The Transmit Power defines the transmit power for the antenna expressed as an index into the TransmitPowerTable (section 10.2.4.1.1). The HopTableID is the index of the frequency hop table to be used by the Reader (section 10.2.4.1.2.1) and is used when operating in frequency-hopping regulatory regions. This field is ignored in non-frequency-hopping regulatory regions. The ChannelIndex is the one-based channel index in the FixedFrequencyTable to use during transmission (section 10.2.4.1.2.2) and is used when operating in non-frequency-hopping regulatory regions. This field is ignored in frequency-hopping regulatory regions.

func ROBoundarySpec

func ROBoundarySpec(params ...[]interface{}) []interface{}

ROSpecStartTrigger Parameter, ROSpecStopTrigger Parameter

func ROReportSpec

func ROReportSpec(ROReportTrigger, N int, params ...[]interface{}) []interface{}

This Parameter carries the Reader inventory and RF survey reporting definition for the antenna. This parameter describes the contents of the report sent by the Reader and defines the events that cause the report to be sent.

The ROReportTrigger field defines the events that cause the report to be sent.

The TagReportContentSelector parameter defines the desired contents of the report. The ROReportTrigger defines the event that causes the report to be sent by the Reader to the Client.

Custom extensions to this parameter are intended to specify summary data to be reported as an extension to the RO_ACCESS_REPORT message (see section 14.1.2).

params = <TagReportContentSelector Parameter> , List of <Custom Parameter>

func ROSpec

func ROSpec(ROSpecID, Priority, CurrentState int, params ...[]interface{}) []interface{}

This parameter carries the information of the Reader inventory and survey operation.

params = ROBoundarySpec Parameter , SpecParameter (1-n) , ROReportSpec Parameter

func ROSpecStartTrigger

func ROSpecStartTrigger(ROSpecStartTriggerType int, params ...[]interface{}) []interface{}

PeriodicTriggerValue Parameter , GPITriggerValue Parameter

func ROSpecStopTrigger

func ROSpecStopTrigger(ROSpecStopTriggerType int, DurationTriggerValue int, params ...[]interface{}) []interface{}

GPITriggerValue Parameter

func ReaderEventNotification

func ReaderEventNotification(config ...bool) []interface{}

required 9 field no. 182

func ReaderEventNotificationSpec

func ReaderEventNotificationSpec(params ...[]interface{}) []interface{}

This parameter is used by the Client to enable or disable notification of one or more Reader events. Notification of buffer overflow events and connection events (attempt/close) are mandatory, and not configurable.

params = List of <EventNotificationState Parameter>

func ResetFactoryOpt

func ResetFactoryOpt() []byte

func RoReportSpec

func RoReportSpec(ROReportTrigger, N int, params ...[]interface{}) []interface{}

This Parameter carries the Reader inventory and RF survey reporting definition for the antenna. This parameter describes the contents of the report sent by the Reader and defines the events that cause the report to be sent.

func SEND_KEEPALIVE

func SEND_KEEPALIVE(messageId int) []byte

This message is issued by the Reader to the Client. This message can be used by the Client to monitor the LLRP-layer connectivity with the Reader. The Client configures the trigger at the Reader to send the Keepalive message. The configuration is done using the KeepaliveSpec parameter

func SET_READER_CONFIG

func SET_READER_CONFIG(messageId int, restore_factory_setting bool, params ...[]interface{}) []byte

func START_ROSPEC

func START_ROSPEC(messageId, ROSpecID int) []byte

This message is issued by the Client to the Reader. Upon receiving the message, the Reader starts the ROSpec corresponding to ROSpecID passed in this message, if the ROSpec is in the enabled state.

func STOP_ROSPEC

func STOP_ROSPEC(messageId, ROSpecID int) []byte

This message is issued by the Client to the Reader. Upon receiving the message, the Reader stops the execution of the ROSpec corresponding to the ROSpecID passed in this message. STOP_ROSPEC overrides all other priorities and stops the execution. This basically moves the ROSpec’s state to Inactive. This message does not the delete the ROSpec.

func SetEventSpecOption

func SetEventSpecOption(params ...bool) []byte

if len(params) != 9 will be default value

func SetRegion

func SetRegion(params ...int) []byte

func TagObservationTrigger

func TagObservationTrigger(TriggerType, NumberOfTags, NumberOfAttempts, T, Timeout int) []interface{}

TriggerType: Integer value : modulation

0	Upon seeing N tag observations, or timeout. The definition of an "observation" is vendor specific.
1	Upon seeing no more new tag observations for T ms, or timeout. The definition of an "observation" is
vendor specific.
2	N attempts to see all tags in the FOV, or timeout.
3	Upon seeing N unique tag observations, or timeout.
4	Upon seeing no more new unique tag observations for T ms, or timeout.

----- NumberOfTags: Unsigned Short Integer. This field SHALL be ignored when TriggerType != 0 and TriggerType != 3. NumberOfAttempts; Unsigned Short Integer. This field SHALL be ignored when TriggerType != 2. T : Unsigned Short Integer. Idle time between tag responses in milliseconds. This field SHALL be ignored when TriggerType != 1 and TriggerType != 4. Timeout : Unsigned Integer; Trigger timeout value in milliseconds. If set to zero, it indicates that there is no timeout.

func TagReportContentSelector

func TagReportContentSelector(
	EnableROSpecID,
	EnableSpecIndex,
	EnableInventoryParameterSpecID,
	EnableAntennaID,
	EnableChannelIndex,
	EnablePeakRSSI,
	EnableFirstSeenTimestamp,
	EnableLastSeenTimestamp,
	EnableTagSeenCount,
	EnableAccessSpecID bool,
	params ...[]interface{},
) []interface{}

This parameter is used to configure the contents that are of interest in TagReportData. If enabled, the field is reported along with the tag data in the TagReportData.

func UTCTimestampParam

func UTCTimestampParam(microsecond uint64) []interface{}

UTCTimestamp Parameter

Types

type ADD_ROSPEC_RESPONSE

type ADD_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type AISpecEventParameter

type AISpecEventParameter struct {
	EventType uint8
	ROSpecID  uint32
	SpecIndex uint16
}

type AccessSpecIDParameter

type AccessSpecIDParameter struct {
}

type AntennaEventParameter

type AntennaEventParameter struct {
	EventType uint8
	AntennaID uint16
}

type AntennaIDParameter

type AntennaIDParameter struct {
	AntennaID uint16
}

type AntennaProperty

type AntennaProperty struct {
	Connected bool
	Id        uint16
	Gain      uint16
}

type CLOSE_CONNECTION_RESPONSE

type CLOSE_CONNECTION_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type CUSTOM_MESSAGE_RESPONSE

type CUSTOM_MESSAGE_RESPONSE struct {
	MsgId   uint32
	Vendor  uint32
	SubType uint8
	Status  *LLRPStatus
}

type ChannelIndexParameter

type ChannelIndexParameter struct {
	ChannelIndex uint16
}

type Conn

type Conn struct {
	// Keep all members for which we use atomic at the beginning of the
	// struct and make sure they are all 64bits (or use padding if necessary).
	// atomic.* functions crash on 32bit machines if operand is not aligned
	// at 64bit. See https://github.com/golang/go/issues/599
	// reader
	Opts Options
	// contains filtered or unexported fields
}

A Conn represents a bare connection to a reader. It can send and receive []byte payloads.

func (*Conn) Close

func (nc *Conn) Close()

Close will close the connection to the server. This call will release all blocking calls, such as Flush() and NextMsg()

func (*Conn) Disabled_ROSpec

func (nc *Conn) Disabled_ROSpec(messageId, ROSpecID int, reader_id string) error

func (*Conn) Enable_ROSpec

func (nc *Conn) Enable_ROSpec(messageId, ROSpecID int, reader_id string) error

func (*Conn) GPICheck

func (nc *Conn) GPICheck(reader_id string, gpis []*GPICurrentState) error

func (*Conn) GPIToggleMonitor

func (nc *Conn) GPIToggleMonitor(reader_id string, port_trigger int, t time.Duration, cb HandlerIOState) error

func (*Conn) GPIget

func (nc *Conn) GPIget(messageId int, reader_id string) error

func (*Conn) GPIset

func (nc *Conn) GPIset(messageId int, reader_id string, port int, port_state bool) error

func (*Conn) GPOset

func (nc *Conn) GPOset(messageId int, reader_id string, params ...bool) error

set gpo via reader_id by order params 1-4

func (*Conn) GPOsetp

func (nc *Conn) GPOsetp(messageId int, reader_id string, number_port int, state bool) error

func (*Conn) GetRoReport

func (nc *Conn) GetRoReport(messageId int, reader_id string) error

func (*Conn) ListReader

func (nc *Conn) ListReader() map[string]*SPReaderInfo

List of readers registed

func (*Conn) Lock

func (nc *Conn) Lock()

func (*Conn) Registry

func (nc *Conn) Registry(reader *SPReaderInfo) error

func (*Conn) StartROSpec

func (nc *Conn) StartROSpec(messageId, ROSpecID int, reader_id string) error

func (*Conn) StopROSpec

func (nc *Conn) StopROSpec(messageId, ROSpecID int, reader_id string) error

func (*Conn) Subscription

func (nc *Conn) Subscription(cb MsgHandler) ([]*Subscription, error)

func (*Conn) Unlock

func (nc *Conn) Unlock()

type ConnHandler

type ConnHandler func(*RConn)

ConnHandler is used for asynchronous events such as disconnected and closed connections.

type ConnectionAttemptEventParameter

type ConnectionAttemptEventParameter struct {
	Status uint16
}

type CustomDialer

type CustomDialer interface {
	Dial(network, address string) (net.Conn, error)
}

CustomDialer can be used to specify any dialer, not necessarily a *net.Dialer.

type DELETE_ACCESSSPEC_RESPONSE

type DELETE_ACCESSSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type DELETE_ROSPEC_RESPONSE

type DELETE_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

-------------------

type DISABLE_ROSPEC_RESPONSE

type DISABLE_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type ENABLE_ROSPEC_RESPONSE

type ENABLE_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type ERROR_MESSAGE

type ERROR_MESSAGE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type ErrHandler

type ErrHandler func(*Conn, *Subscription, error)

ErrHandler is used to process asynchronous errors encountered while processing inbound messages.

type EventNotificationResponse

type EventNotificationResponse struct {
	MsgId uint32
	Data  *EvtData
}

type EventNotificationState

type EventNotificationState struct {
	EventType uint16
	State     int
}

type EventReport

type EventReport struct {
	HoldEventReportsUponReconnect bool
}

type EvtData

type EvtData struct {
	TimestampUTC      uint64
	Hopping           []*HoppingEventParameter
	GpiEvt            []*GpiEventParam
	ROSpEvt           []*ROSpecEventParameter
	ReportBuf         []*ReportBufferLevelWarningEventParameter
	ReaderException   []*ReaderExceptionEventParameter
	RFSurvey          []*RFSurveyEventParameter
	AISpec            []*AISpecEventParameter
	Antenna           []*AntennaEventParameter
	ConnectionAttempt []*ConnectionAttemptEventParameter
}

ReaderEventNotificationData

type GPICurrentState

type GPICurrentState struct {
	Number uint16
	Config bool
	State  int
}

type GPOWriteData

type GPOWriteData struct {
	Number uint16
	Data   bool
}

type GState

type GState struct {
	// contains filtered or unexported fields
}

type GetConfigResponse

type GetConfigResponse struct {
	MsgId  uint32
	Status *LLRPStatus
	Id     *IdentificationParam
	AnnPty []*AntennaProperty
	//AnnCon    []*AntennaConfig
	EvtSpec *ReaderEventNoticationSpec
	//ROSpec    *ROReportSpec
	//AccSpec   *AccessReportSpec
	//CfgState  *LLRPConfigState
	Ka        *KeepaliveResponse
	GPI       []*GPICurrentState
	GPO       []*GPOWriteData
	EvtReport *EventReport
}

type GpiEventParam

type GpiEventParam struct {
	PortNumber uint16
	Evt        bool
}

type HandlerIOState

type HandlerIOState func(*IOState)

type HoppingEventParameter

type HoppingEventParameter struct {
	HopTableID       uint16
	NextChannelIndex uint16
}

type IOState

type IOState struct {
	ReaderId string
	Ports    map[uint16]int
	// contains filtered or unexported fields
}

type IdentificationParam

type IdentificationParam struct {
	Type int
	Id   string
}

type InventoryParameterSpecIDParameter

type InventoryParameterSpecIDParameter struct {
	InventoryParameterSpecId uint16
}

type KeepaliveResponse

type KeepaliveResponse struct {
	Type         int
	IntervalTime uint32
}

type LLRPStatus

type LLRPStatus struct {
	Success    bool
	StatusCode uint16
	ErrMsg     string
}

type Msg

type Msg struct {
	From    *Subscription
	Reports []interface{}
	// contains filtered or unexported fields
}

Msg is a structure used by Subscribers and PublishMsg().

type MsgHandler

type MsgHandler func(msg *Msg)

type MsgLoss

type MsgLoss struct {
	Len int
}

type NetworkIssue

type NetworkIssue struct {
	Type       int
	Reconnects int
	Period     time.Duration
}

type OpSpecIDParameter

type OpSpecIDParameter struct {
	OpSpecId uint16
}

type Option

type Option func(*Options) error

Option is a function on the options for a connection.

type Options

type Options struct {
	// command stack when start reader
	InitCommand [][]byte
	// AllowReconnect enables reconnection logic to be used when we
	// encounter a disconnect from the current reader.
	AllowReconnect bool

	// MaxReconnect sets the number of reconnect attempts that will be
	// tried before giving up. If negative, then it will never give up
	// trying to reconnect.
	MaxReconnect int

	// ReconnectWait sets the time to backoff after attempting a reconnect
	// to a reader that we were already connected to previously.
	ReconnectWait time.Duration

	// Timeout sets the timeout for a Dial operation on a connection.
	Timeout time.Duration

	// FlusherTimeout is the maximum time to wait for the flusher loop
	// to be able to finish writing to the underlying connection.
	FlusherTimeout time.Duration

	// ClosedCB sets the closed handler that is called when a client will
	// no longer be connected.
	ClosedCB ConnHandler

	// DisconnectedCB sets the disconnected handler that is called
	// whenever the connection is disconnected.
	DisconnectedCB ConnHandler

	// ReconnectedCB sets the reconnected handler called whenever
	// the connection is successfully reconnected.
	ReconnectedCB ConnHandler

	// DiscoveredServersCB sets the callback that is invoked whenever a new
	// reader has joined the cluster.
	DiscoveredServersCB ConnHandler

	// AsyncErrorCB sets the async error handler (e.g. slow consumer errors)
	AsyncErrorCB ErrHandler

	// ReconnectBufSize is the size of the backing bufio during reconnect.
	// Once this has been exhausted publish operations will return an error.
	ReconnectBufSize int
	// Interval keepalive to prevent readLoop exit
	KeepaliveInterval time.Duration
}

Options can be used to create a customized connection.

func GetDefaultOptions

func GetDefaultOptions() Options

func (Options) NewConn

func (o Options) NewConn() *Conn

type PeakRSSIParameter

type PeakRSSIParameter struct {
	PeakRSSI uint8
}

type RConn

type RConn struct {
	Statistics
	// contains filtered or unexported fields
}

func (*RConn) IsClosed

func (nc *RConn) IsClosed() bool

IsClosed tests if a Conn has been closed.

func (*RConn) IsConnected

func (nc *RConn) IsConnected() bool

IsConnected tests if a Conn is connected.

func (*RConn) IsReconnecting

func (nc *RConn) IsReconnecting() bool

IsReconnecting tests if a Conn is reconnecting.

func (*RConn) Stats

func (nc *RConn) Stats() Statistics

Stats will return a race safe copy of the Statistics section for the connection.

func (*RConn) Status

func (nc *RConn) Status() Status

Status returns the current state of the connection.

type RFSurveyEventParameter

type RFSurveyEventParameter struct {
	EventType uint8
	ROSpecID  uint32
	SpecIndex uint16
}

type ROAccessReportResponse

type ROAccessReportResponse struct {
	MsgId uint32
	Data  *TagReportData
}

type ROSpecEventParameter

type ROSpecEventParameter struct {
	EventType          uint8
	ROSpecID           uint32
	PreemptingROSpecID uint32
}

This parameter carries the ROSpec event details. The EventType could be start or end of the ROSpec.

type ROSpecIDParameter

type ROSpecIDParameter struct {
	ROSpecID uint32
}

type ReaderEventNoticationSpec

type ReaderEventNoticationSpec struct {
	State []*EventNotificationState
}

type ReaderExceptionEventParameter

type ReaderExceptionEventParameter struct {
	ROSpecID                 []*ROSpecIDParameter
	SpecIndex                []*SpecIndexParameter
	InventoryParameterSpecID []*InventoryParameterSpecIDParameter
	AntennaID                []*AntennaIDParameter
	AccessSpecID             []*AccessSpecIDParameter
	OpSpecID                 []*OpSpecIDParameter
	Message                  string
}

type ReportBufferLevelWarningEventParameter

type ReportBufferLevelWarningEventParameter struct {
	ReportBufferPercentageFull uint8
}

type ReportBufferOverflowErrorEvent

type ReportBufferOverflowErrorEvent struct {
}

type SPReaderInfo

type SPReaderInfo struct {
	Id   string `json:"reader_id"`
	Host string `json:"host"`

	DidConnect  bool
	Reconnects  int
	LastAttempt time.Time

	InitCommand [][]byte
	// contains filtered or unexported fields
}

type START_ROSPEC_RESPONSE

type START_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type STOP_ROSPEC_RESPONSE

type STOP_ROSPEC_RESPONSE struct {
	MsgId  uint32
	Status *LLRPStatus
}

type SetConfigResponse

type SetConfigResponse struct {
	MsgId  uint32
	Status *LLRPStatus
}

type SpecIndexParameter

type SpecIndexParameter struct {
	SpecIndex uint16
}

type Statistics

type Statistics struct {
	InMsgs     uint64
	OutMsgs    uint64
	InBytes    uint64
	OutBytes   uint64
	Reconnects uint64
}

Tracks various stats received and sent on this connection, including counts for messages and bytes.

type Status

type Status int

Status represents the state of the connection.

type Subscription

type Subscription struct {
	Id string
	Ip string
	// contains filtered or unexported fields
}

func (*Subscription) Ack

func (sc *Subscription) Ack(messageId int) error

type SubscriptionType

type SubscriptionType int

SubscriptionType is the type of the Subscription.

type TagReportData

type TagReportData struct {
	EPC_96                string
	AntennaID             uint16
	PeakRSSI              int
	ChannelIndex          uint16
	FirstSeenTimestampUTC uint64
	AccessSpecId          uint32
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL