Browse Source

Improved error handling for set_v and set_i

Now the error behavior for set_v and set_i is well-defined by the
documentation: they print nothing on success and an error message on
failure.  The range of valid values is now [0, 20000] for set_v and
[0, 5000] for set_i, matching the voltages and currents that can be
provided by USB Power Delivery.

Bumped version number to 1.0.1, reflecting this bugfix.
Clara Hobbs 7 years ago
parent
commit
0706adb3f7
4 changed files with 20 additions and 6 deletions
  1. 5
    3
      docs/console_config.md
  2. 12
    0
      src/pd.h
  3. 2
    2
      src/shell.c
  4. 1
    1
      src/usbcfg.c

+ 5
- 3
docs/console_config.md View File

1
 # PD Buddy Sink Serial Console Configuration Interface
1
 # PD Buddy Sink Serial Console Configuration Interface
2
 
2
 
3
-Version 1.0.0, 2017-06-05
3
+Version 1.0.1, 2017-06-19
4
 
4
 
5
 The PD Buddy Sink can be put into setup mode by holding the Setup button while
5
 The PD Buddy Sink can be put into setup mode by holding the Setup button while
6
 plugging it into a computer.  In this mode, the device does not perform any USB
6
 plugging it into a computer.  In this mode, the device does not perform any USB
152
 
152
 
153
 Usage: `set_v voltage_in_mV`
153
 Usage: `set_v voltage_in_mV`
154
 
154
 
155
-Sets the voltage of the configuration buffer, in millivolts.
155
+Sets the voltage of the configuration buffer, in millivolts.  Prints no output
156
+on success, an error message on failure.
156
 
157
 
157
 Note: values are rounded down to the nearest Power Delivery voltage unit
158
 Note: values are rounded down to the nearest Power Delivery voltage unit
158
 (50 mV).
159
 (50 mV).
161
 
162
 
162
 Usage: `set_i current_in_mA`
163
 Usage: `set_i current_in_mA`
163
 
164
 
164
-Sets the current of the configuration buffer, in milliamperes.
165
+Sets the current of the configuration buffer, in milliamperes.  Prints no
166
+output on success, an error message on failure.
165
 
167
 
166
 Note: values are rounded down to the nearest Power Delivery current unit
168
 Note: values are rounded down to the nearest Power Delivery current unit
167
 (10 mA).
169
 (10 mA).

+ 12
- 0
src/pd.h View File

256
 #define PD_PDI_A(pdv) ((pdv) / 100)
256
 #define PD_PDI_A(pdv) ((pdv) / 100)
257
 #define PD_PDI_CA(pdv) ((pdv) % 100)
257
 #define PD_PDI_CA(pdv) ((pdv) % 100)
258
 
258
 
259
+/*
260
+ * Unit constants
261
+ */
262
+#define PD_MV_MIN 0
263
+#define PD_MV_MAX 20000
264
+#define PD_PDV_MIN PD_MV2PDV(PD_MV_MIN)
265
+#define PD_PDV_MAX PD_MV2PDV(PD_MV_MAX)
266
+#define PD_MA_MIN 0
267
+#define PD_MA_MAX 5000
268
+#define PD_PDI_MIN PD_MA2PDI(PD_MA_MIN)
269
+#define PD_PDI_MAX PD_MA2PDI(PD_MA_MAX)
270
+
259
 
271
 
260
 #endif /* PDB_PD_H */
272
 #endif /* PDB_PD_H */

+ 2
- 2
src/shell.c View File

198
 
198
 
199
     char *endptr;
199
     char *endptr;
200
     long i = strtol(argv[0], &endptr, 0);
200
     long i = strtol(argv[0], &endptr, 0);
201
-    if (i >= 0 && i <= UINT16_MAX && endptr > argv[0]) {
201
+    if (i >= PD_MV_MIN && i <= PD_MV_MAX && endptr > argv[0]) {
202
         /* Convert mV to the unit used by USB PD */
202
         /* Convert mV to the unit used by USB PD */
203
         tmpcfg.v = PD_MV2PDV(i);
203
         tmpcfg.v = PD_MV2PDV(i);
204
     } else {
204
     } else {
216
 
216
 
217
     char *endptr;
217
     char *endptr;
218
     long i = strtol(argv[0], &endptr, 0);
218
     long i = strtol(argv[0], &endptr, 0);
219
-    if (i >= 0 && i <= UINT16_MAX && endptr > argv[0]) {
219
+    if (i >= PD_MA_MIN && i <= PD_MA_MAX && endptr > argv[0]) {
220
         /* Convert mA to the unit used by USB PD */
220
         /* Convert mA to the unit used by USB PD */
221
         tmpcfg.i = PD_MA2PDI(i);
221
         tmpcfg.i = PD_MA2PDI(i);
222
     } else {
222
     } else {

+ 1
- 1
src/usbcfg.c View File

189
 static const uint8_t vcom_string3[] = {
189
 static const uint8_t vcom_string3[] = {
190
     USB_DESC_BYTE(12),                    /* bLength.                         */
190
     USB_DESC_BYTE(12),                    /* bLength.                         */
191
     USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType.                 */
191
     USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType.                 */
192
-    '1', 0, '.', 0, '0', 0, '.', 0, '0', 0
192
+    '1', 0, '.', 0, '0', 0, '.', 0, '1', 0
193
 };
193
 };
194
 
194
 
195
 /*
195
 /*

Loading…
Cancel
Save