Skip to content

Commit

Permalink
Merge pull request #9 from tillhub/develop
Browse files Browse the repository at this point in the history
release v1.2.1
  • Loading branch information
SloInfinity authored Dec 7, 2022
2 parents 3040918 + 041579f commit 1c5a816
Show file tree
Hide file tree
Showing 12 changed files with 238 additions and 53 deletions.
4 changes: 2 additions & 2 deletions buildSrc/src/main/java/ConfigData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ object ConfigData {
const val applicationId = "de.tillhub.printengine"
const val minSdkVersion = 21
const val targetSdkVersion = 32
const val versionCode = 11
const val versionName = "1.1.0"
const val versionCode = 13
const val versionName = "1.2.1"

val JAVA_VERSION = JavaVersion.VERSION_11
val JVM_TARGET = JavaVersion.VERSION_11.toString()
Expand Down
3 changes: 3 additions & 0 deletions proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
-keep class de.tillhub.printengine.Printer {
*;
}
-keep class de.tillhub.printengine.Printer$Companion {
*;
}
-keep class de.tillhub.printengine.pax.barcode.BarcodeEncoder {
*;
}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/de/tillhub/printengine/Printer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ interface Printer {
fun disable()
fun observeConnection(): Flow<PrinterConnectionState>
fun getPrinterState(): PrinterState
fun setPrintingIntensity(intensity: PrintingIntensity)
suspend fun getPrinterInfo(): PrinterResult<PrinterInfo>
suspend fun printText(text: String): PrinterResult<Unit>
suspend fun printReceipt(text: String, headerImage: Bitmap?): PrinterResult<Unit>
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/tillhub/printengine/PrinterController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import de.tillhub.printengine.data.PrinterInfo
import de.tillhub.printengine.data.PrinterState
import de.tillhub.printengine.data.PrintingFontType
import de.tillhub.printengine.data.RawPrinterData
import de.tillhub.printengine.data.PrintingIntensity

interface PrinterController {
fun sendRawData(data: RawPrinterData)
Expand All @@ -16,6 +17,7 @@ interface PrinterController {
fun printImage(image: Bitmap)
fun feedPaper()
fun cutPaper()
fun setIntensity(intensity: PrintingIntensity)
fun start()
suspend fun getPrinterInfo(): PrinterInfo
}
18 changes: 18 additions & 0 deletions src/main/java/de/tillhub/printengine/data/PrintingIntensity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package de.tillhub.printengine.data

/**
* Defines printing intensity (darkness of the print).
* For PAX devices it is defined as:
* DEFAULT: 100%
* LIGHT: 50%
* DARK: 150%
* DARKER: 250%
* DARKEST: 500%
*/
enum class PrintingIntensity {
DEFAULT,
LIGHT,
DARK,
DARKER,
DARKEST
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class EmulatedPrinter : Printer {

override fun getPrinterState(): PrinterState = PrinterState.PrinterNotDetected

override fun setPrintingIntensity(intensity: PrintingIntensity) {
logInfo("setting printer intensity to: ${intensity.name}")
}

override suspend fun getPrinterInfo(): PrinterResult<PrinterInfo> {
return PrinterResult.Success(PrinterInfo(
serialNumber = "n/a",
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/de/tillhub/printengine/pax/PaxPrinter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class PaxPrinter(
) : Printer {

private var enabled: Boolean = true
private var printingIntensity: PrintingIntensity = PrintingIntensity.DEFAULT

override fun connect(context: Context) {
paxPrintService.initPrinterService(context)
Expand All @@ -38,6 +39,10 @@ class PaxPrinter(
it.getPrinterState()
}

override fun setPrintingIntensity(intensity: PrintingIntensity) {
printingIntensity = intensity
}

override suspend fun getPrinterInfo(): PrinterResult<PrinterInfo> =
paxPrintService.withPrinterCatching {
it.getPrinterInfo().let { info ->
Expand Down Expand Up @@ -65,6 +70,7 @@ class PaxPrinter(
|""".trimMargin()
)
if (enabled) {
it.setIntensity(printingIntensity)
it.setFontSize(it.getPrinterInfo().printingFontType)
it.printText(text)
it.feedPaper()
Expand All @@ -83,6 +89,7 @@ class PaxPrinter(
|""".trimMargin()
)
if (enabled) {
printer.setIntensity(printingIntensity)
printer.setFontSize(printer.getPrinterInfo().printingFontType)
headerImage?.let { printer.printImage(it) }
printer.printText(text)
Expand Down Expand Up @@ -113,6 +120,7 @@ class PaxPrinter(
|""".trimMargin()
)
if (enabled) {
printer.setIntensity(printingIntensity)
printer.setFontSize(printer.getPrinterInfo().printingFontType)
headerImage?.let { printer.printImage(it) }
printer.printText(rawReceiptText)
Expand All @@ -136,6 +144,7 @@ class PaxPrinter(
|""".trimMargin()
)
if (enabled) {
printer.setIntensity(printingIntensity)
printer.setFontSize(printer.getPrinterInfo().printingFontType)
printer.sendRawData(receipt.rawData)
printer.feedPaper()
Expand Down
32 changes: 31 additions & 1 deletion src/main/java/de/tillhub/printengine/pax/PaxPrinterController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import com.pax.dal.entity.EFontTypeAscii
import com.pax.dal.entity.EFontTypeExtCode
import com.pax.dal.exceptions.PrinterDevException
import de.tillhub.printengine.PrinterController
import de.tillhub.printengine.data.*
import de.tillhub.printengine.data.PrinterInfo
import de.tillhub.printengine.data.PrinterState
import de.tillhub.printengine.data.PrintingFontType
import de.tillhub.printengine.data.RawPrinterData
import de.tillhub.printengine.data.PrintingPaperSpec
import de.tillhub.printengine.data.PrinterServiceVersion
import de.tillhub.printengine.data.PrintingIntensity
import de.tillhub.printengine.pax.barcode.BarcodeEncoder
import de.tillhub.printengine.pax.barcode.BarcodeType

Expand Down Expand Up @@ -130,6 +136,24 @@ class PaxPrinterController(
printerService.cutPaper(FULL_PAPER_CUT)
}

/**
* Sets printing intensity (darkness of the print)
* DEFAULT: 100%
* LIGHT: 50%
* DARK: 150%
* DARKER: 250%
* DARKEST: 500%
*/
override fun setIntensity(intensity: PrintingIntensity) {
printerService.setGray(when (intensity) {
PrintingIntensity.DEFAULT -> DEFAULT_INTENSITY
PrintingIntensity.LIGHT -> LIGHT_INTENSITY
PrintingIntensity.DARK -> DARK_INTENSITY
PrintingIntensity.DARKER -> DARKER_INTENSITY
PrintingIntensity.DARKEST -> DARKEST_INTENSITY
})
}

/**
* Start printer and prints data in buffer.This is synchronous interface.
*/
Expand Down Expand Up @@ -163,6 +187,12 @@ class PaxPrinterController(
}

companion object {
private const val DEFAULT_INTENSITY = 1
private const val LIGHT_INTENSITY = 50
private const val DARK_INTENSITY = 150
private const val DARKER_INTENSITY = 250
private const val DARKEST_INTENSITY = 500

const val FULL_PAPER_CUT = 0
const val PAPER_FEEDER_DIVIDER = 20
const val PAPER_FEEDER_LENGTH_END = 180
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/de/tillhub/printengine/sunmi/SunmiPrinter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ class SunmiPrinter(
it.getPrinterState()
}

override fun setPrintingIntensity(intensity: PrintingIntensity) {
// not needed for sunmi devices
}

override suspend fun getPrinterInfo(): PrinterResult<PrinterInfo> =
printerService.withPrinterCatching {
it.getPrinterInfo().let { info ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,13 @@ import android.graphics.Bitmap
import android.os.RemoteException
import com.sunmi.peripheral.printer.SunmiPrinterService
import de.tillhub.printengine.PrinterController
import de.tillhub.printengine.data.*
import de.tillhub.printengine.data.PrinterInfo
import de.tillhub.printengine.data.PrinterState
import de.tillhub.printengine.data.PrintingFontType
import de.tillhub.printengine.data.RawPrinterData
import de.tillhub.printengine.data.PrintingPaperSpec
import de.tillhub.printengine.data.PrinterServiceVersion
import de.tillhub.printengine.data.PrintingIntensity
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine

Expand Down Expand Up @@ -153,6 +159,10 @@ class SunmiPrinterController(
}
}

override fun setIntensity(intensity: PrintingIntensity) {
// not needed for sunmi devices
}

override fun start() {
// not needed for sunmi devices
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class PaxPrinterControllerTest : FunSpec({
every { printStr(any(), any()) } just Runs
every { step(any()) } just Runs
every { printBitmap(any()) } just Runs
every { setGray(any()) } just Runs
every { cutPaper(any()) } just Runs
every { start() } returns 0
}
Expand Down Expand Up @@ -175,6 +176,22 @@ class PaxPrinterControllerTest : FunSpec({
}
}

test("setIntensity") {
printerController.setIntensity(PrintingIntensity.DEFAULT)
printerController.setIntensity(PrintingIntensity.LIGHT)
printerController.setIntensity(PrintingIntensity.DARK)
printerController.setIntensity(PrintingIntensity.DARKER)
printerController.setIntensity(PrintingIntensity.DARKEST)

verify(ordering = Ordering.ORDERED) {
printerService.setGray(1)
printerService.setGray(50)
printerService.setGray(150)
printerService.setGray(250)
printerService.setGray(500)
}
}

test("start") {
printerController.start()

Expand Down
Loading

0 comments on commit 1c5a816

Please sign in to comment.