Skip to content

Commit c1a3c4e

Browse files
committed
Address @tyeth PR review
1 parent 8c3dbdd commit c1a3c4e

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

src/Wippersnapper_V2.h

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,12 @@
7676
#include <string>
7777
#include <vector>
7878

79-
// Nanopb dependencies
79+
// Nanopb messages and dependencies
80+
#include "protos/signal.pb.h"
8081
#include <nanopb/pb_common.h>
8182
#include <nanopb/pb_decode.h>
8283
#include <nanopb/pb_encode.h>
8384
#include <nanopb/ws_pb_helpers.h>
84-
#include <pb.h>
85-
86-
// Include Signal Proto
87-
#include "protos/checkin.pb.h"
88-
#include "protos/digitalio.pb.h"
89-
#include "protos/ds18x20.pb.h"
90-
#include "protos/pixels.pb.h"
91-
#include "protos/pwm.pb.h"
92-
#include "protos/signal.pb.h"
9385

9486
// External libraries
9587
#include "Adafruit_MQTT.h" // MQTT Client

src/components/pwm/hardware.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ bool PWMHardware::analogWrite(uint32_t value) {
162162
return false;
163163
}
164164

165-
// Calculate duty cycle for the `value` passed in
166-
// (assumes 12-bit resolution, 2^12)
167-
uint32_t dutyCycle = (uint32_t)((4095.0 / 255.0) * min(value, (uint32_t)255));
165+
// Calculate duty cycle for the `value`
166+
uint32_t dutyCycle =
167+
(uint32_t)(((double)_resolution / 255.0) * min(value, (uint32_t)255));
168168
return ledcWrite(_pin, dutyCycle);
169169
}
170170

src/components/servo/controller.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,28 @@ ServoController::~ServoController() {
4444
}
4545
}
4646

47+
/**************************************************************************/
48+
/*!
49+
@brief Publishes a ServoAdded message to the broker
50+
@param servo_pin
51+
Pin number of the servo
52+
@param did_attach
53+
True if the servo was attached successfully, False otherwise
54+
@returns True if successful, False otherwise
55+
*/
56+
/**************************************************************************/
57+
bool ServoController::PublishServoAddedMsg(
58+
const char *servo_pin, bool did_attach,
59+
wippersnapper_servo_ServoAdd *msg_add) {
60+
_servo_model->EncodeServoAdded(msg_add->servo_pin, did_attach);
61+
if (!WsV2.PublishSignal(wippersnapper_signal_DeviceToBroker_servo_added_tag,
62+
_servo_model->GetServoAddedMsg())) {
63+
WS_DEBUG_PRINTLN("[servo] Error: Failed publishing a ServoAdded message!");
64+
return false;
65+
}
66+
return true;
67+
}
68+
4769
/**************************************************************************/
4870
/*!
4971
@brief Handles a ServoAdd message
@@ -53,13 +75,16 @@ ServoController::~ServoController() {
5375
*/
5476
/**************************************************************************/
5577
bool ServoController::Handle_Servo_Add(pb_istream_t *stream) {
78+
bool did_attach;
5679
if (_active_servo_pins >= MAX_SERVOS) {
5780
WS_DEBUG_PRINTLN("[servo] Error: Maximum number of servos reached!");
81+
PublishServoAddedMsg("PIN_UNKNOWN", false, _servo_model->GetServoAddMsg());
5882
return false;
5983
}
6084

6185
if (!_servo_model->DecodeServoAdd(stream)) {
6286
WS_DEBUG_PRINTLN("[servo] Error: Failed to decode ServoAdd message!");
87+
PublishServoAddedMsg("PIN_UNKNOWN", false, _servo_model->GetServoAddMsg());
6388
return false;
6489
}
6590

@@ -69,7 +94,6 @@ bool ServoController::Handle_Servo_Add(pb_istream_t *stream) {
6994
pin, (int)msg_add->min_pulse_width, (int)msg_add->max_pulse_width,
7095
(int)msg_add->servo_freq);
7196
// Attempt to attach the servo to the pin
72-
bool did_attach = false;
7397
did_attach = _servo_hardware[_active_servo_pins]->ServoAttach();
7498

7599
// Write the pulse width to the servo
@@ -87,12 +111,8 @@ bool ServoController::Handle_Servo_Add(pb_istream_t *stream) {
87111
}
88112

89113
// Publish ServoAdded message to IO
90-
_servo_model->EncodeServoAdded(msg_add->servo_pin, did_attach);
91-
if (!WsV2.PublishSignal(wippersnapper_signal_DeviceToBroker_servo_added_tag,
92-
_servo_model->GetServoAddedMsg())) {
93-
WS_DEBUG_PRINTLN("[servo] Error: Failed publishing a ServoAdded message!");
114+
if (!PublishServoAddedMsg("", false, _servo_model->GetServoAddMsg()))
94115
return false;
95-
}
96116
return true;
97117
}
98118

src/components/servo/controller.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class ServoController {
4747

4848
private:
4949
int GetServoIndex(uint8_t pin);
50+
bool PublishServoAddedMsg(const char *servo_pin, bool did_attach,
51+
wippersnapper_servo_ServoAdd *msg_add);
5052
ServoModel *_servo_model;
5153
ServoHardware *_servo_hardware[MAX_SERVOS] = {nullptr};
5254
int _active_servo_pins; ///< Number of active servo pins

0 commit comments

Comments
 (0)