Worker Feedback
The Worker Feedback feature allows you to trigger predefined feedback sequences on a connected scanner. A worker feedback sequence combines visual (LED), audio (buzzer), and haptic (vibration) cues to deliver a unified notification experience.
Use worker feedback to inform operators about specific workflow events — such as successful scans, errors, or other task-related notifications — improving process clarity and reducing errors on the floor.
Default worker feedback implementation
To send a worker feedback command to a connected scanner, use the triggerFeedback() method from the PgManager.
The feedback type is defined through PgPredefinedFeedback, which supports the following options:
PgPredefinedFeedback.SuccessPgPredefinedFeedback.ErrorPgPredefinedFeedback.NeutralYellowPgPredefinedFeedback.NeutralPurplePgPredefinedFeedback.NeutralCyan
PgCommandParams() is an optional parameter that can define additional command behavior, such as queue handling.
IPgCommandResult defines two callbacks:
onSuccess()– called when the feedback command was successfully executed.onError(error: PgError)– called if an error occurs while sending the feedback.
Example implementation:
PgManager.triggerFeedback(
command = PgCommand(
commandData = PgPredefinedFeedback.Success,
commandParams = PgCommandParams()
),
callback = object : IPgCommandResult {
override fun onSuccess() {
// Handle successful feedback execution
}
override fun onError(error: PgError) {
// Handle feedback execution error
}
}
)Specific worker feedback examples
Success
A positive feedback typically used to indicate a successfully completed operation.
LEDs: Green, 1 short blink.
Vibration: 1 short.
Sound: 1 short beep.
// Creating new PgCommandParams setting the queueing behaviour
val pgCommandParams = PgCommandParams()
// Creating SUCCESS predefined callback
val successPredefinedFeedback: PgPredefinedFeedback = PgPredefinedFeedback.Success
// Wrapping the feedback data in a PgCommand with the PgCommandData
val triggerFeedbackCommand = PgCommand(successPredefinedFeedback, pgCommandParams)
pgManager.triggerFeedback(
command = triggerFeedbackCommand,
callback = this
)Error
A negative feedback used to signal a failure or workflow error.
LEDs: Red, 3 short blinks.
Vibration: 3 short vibrations.
Sound: 1 short + 1 long beep.
// Creating new PgCommandParams setting the queueing behaviour
val pgCommandParams = PgCommandParams()
// Creating ERROR predefined callback
val errorPredefinedFeedback: PgPredefinedFeedback = PgPredefinedFeedback.Error
// Wrapping the feedback data in a PgCommand with the PgCommandData
val triggerFeedbackCommand = PgCommand(errorPredefinedFeedback, pgCommandParams)
pgManager.triggerFeedback(
command = triggerFeedbackCommand,
callback = this
)Neutral Yellow
A neutral feedback often used to mark a custom event or state.
LEDs: Yellow, 4 short blinks.
Vibration: 2 short.
Sound: 2 short beeps.
// Creating new PgCommandParams setting the queueing behaviour
val pgCommandParams = PgCommandParams()
// Creating NEUTRAL_YELLOW predefined callback
val neutralYellowPredefinedFeedback: PgPredefinedFeedback = PgPredefinedFeedback.NeutralYellow
// Wrapping the feedback data in a PgCommand with the PgCommandData
val triggerFeedbackCommand = PgCommand(neutralYellowPredefinedFeedback, pgCommandParams)
pgManager.triggerFeedback(
command = triggerFeedbackCommand,
callback = this
)Neutral Purple
Another neutral feedback variant, typically used for custom workflow signaling.
LEDs: Purple, 4 short blinks.
Vibration: 2 short.
Sound: 2 short beeps.
// Creating new PgCommandParams setting the queueing behaviour
val pgCommandParams = PgCommandParams()
// Creating NEUTRAL_PURPLE predefined callback
val neutralPurplePredefinedFeedback: PgPredefinedFeedback = PgPredefinedFeedback.NeutralPurple
// Wrapping the feedback data in a PgCommand with the PgCommandData
val triggerFeedbackCommand = PgCommand(neutralPurplePredefinedFeedback, pgCommandParams)
pgManager.triggerFeedback(
command = triggerFeedbackCommand,
callback = this
)Neutral Cyan
A neutral feedback used for informational or custom process events.
LEDs: Cyan, 4 short blinks.
Vibration: 2 short.
Sound: 2 short beeps.
// Creating new PgCommandParams setting the queueing behaviour
val pgCommandParams = PgCommandParams()
// Creating NEUTRAL_CYAN predefined callback
val neutralCyanPredefinedFeedback: PgPredefinedFeedback = PgPredefinedFeedback.NeutralCyan
// Wrapping the feedback data in a PgCommand with the PgCommandData
val triggerFeedbackCommand = PgCommand(neutralCyanPredefinedFeedback, pgCommandParams)
pgManager.triggerFeedback(
command = triggerFeedbackCommand,
callback = this
)Best Practices
Use Success and Error feedbacks for clear user confirmation in time-sensitive workflows.
Use Neutral feedbacks for custom or informational signaling without interrupting task flow.
Combine with the command queue feature to control execution order and priority if multiple feedbacks are triggered in short succession.