diff --git a/Package.swift b/Package.swift index c01d3fe..ff66843 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.3 +// swift-tools-version:5.9 // Package.swift // Printer // @@ -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", diff --git a/Sources/Printer/Hardware/Bluetooth/BluetoothCentralManagerDelegate.swift b/Sources/Printer/Hardware/Bluetooth/BluetoothCentralManagerDelegate.swift index 3b8def9..5b4a486 100644 --- a/Sources/Printer/Hardware/Bluetooth/BluetoothCentralManagerDelegate.swift +++ b/Sources/Printer/Hardware/Bluetooth/BluetoothCentralManagerDelegate.swift @@ -9,6 +9,7 @@ import CoreBluetooth import Foundation +@Observable class BluetoothCentralManagerDelegate: NSObject, CBCentralManagerDelegate { enum UserDefaultKey { static let autoConnectUUID = "auto.connect.uuid" @@ -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 diff --git a/Sources/Printer/Hardware/Bluetooth/BluetoothPeripheralDelegate.swift b/Sources/Printer/Hardware/Bluetooth/BluetoothPeripheralDelegate.swift index 94cf955..b1ff9f4 100644 --- a/Sources/Printer/Hardware/Bluetooth/BluetoothPeripheralDelegate.swift +++ b/Sources/Printer/Hardware/Bluetooth/BluetoothPeripheralDelegate.swift @@ -9,6 +9,7 @@ import CoreBluetooth import Foundation +@Observable class BluetoothPeripheralDelegate: NSObject, CBPeripheralDelegate { private var services: Set! private var characteristics: Set? diff --git a/Sources/Printer/Hardware/Bluetooth/BluetoothPrinterManager.swift b/Sources/Printer/Hardware/Bluetooth/BluetoothPrinterManager.swift index 7121dd0..0fec0c7 100644 --- a/Sources/Printer/Hardware/Bluetooth/BluetoothPrinterManager.swift +++ b/Sources/Printer/Hardware/Bluetooth/BluetoothPrinterManager.swift @@ -65,6 +65,7 @@ public extension BluetoothPrinterManager { static var specifiedCharacteristics: Set? } +@Observable public class BluetoothPrinterManager { public var updateHandler: (() -> Void)? diff --git a/Sources/Printer/Receipt/QRCode.swift b/Sources/Printer/Receipt/QRCode.swift index 6ed7aec..a0aff9e 100644 --- a/Sources/Printer/Receipt/QRCode.swift +++ b/Sources/Printer/Receipt/QRCode.swift @@ -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 @@ -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] @@ -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 }