M5Stack textcolor update now working immediately when changing in xdrip

This commit is contained in:
Johan Degraeve 2019-10-11 00:07:56 +02:00
parent 14003dbd8c
commit 7bbeb045c3
6 changed files with 55 additions and 9 deletions

View File

@ -290,6 +290,19 @@ extension M5StackManager: M5StackManaging {
extension M5StackManager: M5StackBluetoothDelegate {
/// m5Stack is asking for an update of all parameters, send them
func isAskingForAllParameters(m5Stack: M5Stack) {
// send all parameters, if successful,then for this m5Stack we can set m5StacksParameterUpdateNeeded to false
if sendAllParameters(toM5Stack: m5Stack) {
m5StacksParameterUpdateNeeded[m5Stack] = false
} else {
// failed, so we need to set m5StacksParameterUpdateNeeded to true, so that next time it connects we will send all parameters
m5StacksParameterUpdateNeeded[m5Stack] = true
}
}
/// will be called if M5Stack is connected, and authentication was successful, M5StackManager can start sending data like parameter updates or bgreadings
func isReadyToReceiveData(m5Stack : M5Stack) {

View File

@ -142,13 +142,23 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
/// true if successfully transmitted to M5Stack, doesn't mean M5Stack did receive it, but chance is high
func writeTextColor(textColor: M5StackTextColor) -> Bool {
guard getConnectionStatus() == CBPeripheralState.connected else {
trace("in writeTextColor, not connected ", log: log, type: .info)
guard let textColorAsData = textColor.data else {
trace("in writeTextColor, failed to create textColor as data ", log: log, type: .error)// looks like a software error
return false
}
trace("in writeTextColor, attempting to send", log: log, type: .info)
return writeDataToPeripheral(data: textColorAsData, opCode: .writeTextColorTx)
guard let textColorAsData = textColor.data else {
trace("in writeTextColor, failed create textColor as data ", log: log, type: .error)// looks like a software error
}
/// handles common functions when writing data to M5Stack :
/// - if no connection returns false
/// - calls writeDataToPeripheral(data: Data, type: CBCharacteristicWriteType) and returns the result
private func writeDataToPeripheral(data: Data, opCode : M5StackTransmitterOpCodeTx) -> Bool {
guard getConnectionStatus() == CBPeripheralState.connected else {
trace(" not connected ", log: log, type: .info)
return false
}
@ -156,20 +166,20 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
var dataToSend = Data()
// add opcode
dataToSend.append(M5StackTransmitterOpCodeTx.writeTextColorTx.rawValue.data)
dataToSend.append(opCode.rawValue.data)
// add textcolor as uint16
dataToSend.append(textColorAsData)
dataToSend.append(data)
// send
if !writeDataToPeripheral(data: dataToSend, type: .withoutResponse) {
trace("in dataToSend, failed to send textcolor", log: log, type: .error)
trace(" failed to send", log: log, type: .error)
return false
} else {
trace("successfully written textcolor to M5Stack", log: log, type: .error)
trace(" sent", log: log, type: .error)
return true
}
}
// MARK: - BluetoothTransmitterDelegate functions
@ -335,6 +345,14 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
// M5Stack is requesting for password
sendLocalTimeAndUTCTimeOffSetInSecondsToM5Stack()
case .readAllParametersRx:
// M5Stack is asking for all parameters
guard let m5Stack = m5Stack else {return}// would be a software error if this happens
m5StackBluetoothTransmitterDelegateFixed?.isAskingForAllParameters(m5Stack: m5Stack)
m5StackBluetoothTransmitterDelegateVariable?.isAskingForAllParameters(m5Stack: m5Stack)
}
}

View File

@ -74,6 +74,9 @@ enum M5StackTransmitterOpCodeRx: UInt8, CaseIterable {
/// M5Stack requests timestamp in seconds, local time since 1.1.1970 !!
case readTimeStampRx = 0x11
// M5Stack requests all parameters (textcolor, wifi names and passwords,...), this is usually after an M5Stack restart
case readAllParametersRx = 0x16
}
@ -93,6 +96,8 @@ extension M5StackTransmitterOpCodeRx: CustomStringConvertible {
return "readBlePassWordError2Rx"
case .readTimeStampRx:
return "readTimeStampRx"
case .readAllParametersRx:
return "readAllParametersRx"
}
}
}

View File

@ -34,5 +34,7 @@ protocol M5StackBluetoothDelegate: AnyObject {
/// will be called if M5Stack is connected, and authentication was successful
func isReadyToReceiveData(m5Stack : M5Stack)
func isAskingForAllParameters(m5Stack: M5Stack)
}

View File

@ -579,6 +579,10 @@ extension M5StackViewController: UITableViewDataSource, UITableViewDelegate {
extension M5StackViewController: M5StackBluetoothDelegate {
func isAskingForAllParameters(m5Stack: M5Stack) {
// viewcontroller doesn't use this
}
func isReadyToReceiveData(m5Stack: M5Stack) {
// viewcontroller doesn't use this
}

View File

@ -185,6 +185,10 @@ extension M5StacksViewController: UITableViewDataSource, UITableViewDelegate {
extension M5StacksViewController: M5StackBluetoothDelegate {
func isAskingForAllParameters(m5Stack: M5Stack) {
// viewcontroller doesn't use this
}
func isReadyToReceiveData(m5Stack: M5Stack) {
// viewcontroller doesn't use this
}