Skip to content
5 changes: 2 additions & 3 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.3
// swift-tools-version:5.9
// Package.swift
// Printer
//
Expand All @@ -10,14 +10,13 @@ import PackageDescription

let package = Package(
name: "Printer",
platforms: [.iOS(.v9)],
platforms: [.iOS(.v17)],
products: [
.library(
name: "Printer",
targets: ["Printer"]
)
],
dependencies: [],
targets: [
.target(
name: "Printer",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import CoreBluetooth
import Foundation

@Observable
class BluetoothCentralManagerDelegate: NSObject, CBCentralManagerDelegate {
enum UserDefaultKey {
static let autoConnectUUID = "auto.connect.uuid"
Expand All @@ -18,12 +19,12 @@ class BluetoothCentralManagerDelegate: NSObject, CBCentralManagerDelegate {

var peripheralDelegate: BluetoothPeripheralDelegate?

open var centralManagerDidUpdateState: ((CBCentralManager) -> Void)?
open var centralManagerDidDiscoverPeripheralWithAdvertisementDataAndRSSI:
var centralManagerDidUpdateState: ((CBCentralManager) -> Void)?
var centralManagerDidDiscoverPeripheralWithAdvertisementDataAndRSSI:
((CBCentralManager, CBPeripheral, [String: Any], NSNumber) -> Void)?
open var centralManagerDidConnectPeripheral: ((CBCentralManager, CBPeripheral) -> Void)?
open var centralManagerDidFailToConnectPeripheralWithError: ((CBCentralManager, CBPeripheral, Error?) -> Void)?
open var centralManagerDidDisConnectPeripheralWithError: ((CBCentralManager, CBPeripheral, Error?) -> Void)?
var centralManagerDidConnectPeripheral: ((CBCentralManager, CBPeripheral) -> Void)?
var centralManagerDidFailToConnectPeripheralWithError: ((CBCentralManager, CBPeripheral, Error?) -> Void)?
var centralManagerDidDisConnectPeripheralWithError: ((CBCentralManager, CBPeripheral, Error?) -> Void)?

typealias PeripheralChangeBlock = (UUID) -> Void

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import CoreBluetooth
import Foundation

@Observable
class BluetoothPeripheralDelegate: NSObject, CBPeripheralDelegate {
private var services: Set<String>!
private var characteristics: Set<CBUUID>?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public extension BluetoothPrinterManager {
static var specifiedCharacteristics: Set<String>?
}

@Observable
public class BluetoothPrinterManager {
public var updateHandler: (() -> Void)?

Expand Down
24 changes: 18 additions & 6 deletions Sources/Printer/Receipt/QRCode.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,31 @@ public struct QRCode: ReceiptItem {
case q = 50 // 25%
case h = 51 // 30%
}
public enum ModuleSize: UInt8 {
case s1D = 0x1D
case s28 = 0x28
case s6B = 0x6B
case s03 = 0x03
case s00 = 0x00
case s31 = 0x31
case s43 = 0x43
}

public let m: Model
public let moduleSize: ModuleSize

public let content: String
public let level: RecoveryLevel

// Sets the size of the module for QR Code to n dots. width == height
public let width: UInt8

public init(content: String, width: UInt8 = 200, recovery level: RecoveryLevel = .m, m: Model = .m_2) {
public init(content: String, width: UInt8 = 200, recovery level: RecoveryLevel = .m, m: Model = .m_2, moduleSize: ModuleSize = .s03) {
self.content = content
self.m = m
self.width = width
self.level = level
self.moduleSize = moduleSize
}

// https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=145
Expand All @@ -42,11 +54,11 @@ public struct QRCode: ReceiptItem {
}
// Code type for QR code

// Set dot size
var data = [29, 40, 107, 4, 0, 49, 65, m.rawValue, width]
// Select the model
var data = [29, 40, 107, 4, 0, 49, 65, m.rawValue, 0]

// Select the model
data += [29, 40, 107, 3, 0, 49, 65, m.rawValue]
// Set module size
data += [29, 40, 107, 3, 0, 49, 67, moduleSize.rawValue]

// Select the error correction level
data += [29, 40, 107, 3, 0, 49, 69, level.rawValue]
Expand All @@ -59,7 +71,7 @@ public struct QRCode: ReceiptItem {
data += ([29, 40, 107, pl, ph, 49, 80, 48] + contentData)

// Print the symbol data in the symbol storage area
data += [29, 40, 107, 3, 0, 49, 81, 0]
data += [29, 40, 107, 3, 0, 49, 81, 48]

return data
}
Expand Down