Skip to content

Commit 74d08f6

Browse files
committed
Add default value for rs485-settings in class Serial init
Since this class might use for other python script directly. Add default value to prevent init failed while calling by other python script
1 parent a18eb05 commit 74d08f6

File tree

2 files changed

+73
-66
lines changed

2 files changed

+73
-66
lines changed
Binary file not shown.

contrib/checkbox-ce-oem/checkbox-provider-ce-oem/bin/serial_test.py

Lines changed: 73 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,40 @@ class Serial:
5757
def __init__(
5858
self,
5959
node,
60-
type,
61-
group: list = [],
62-
baudrate: int = 115200,
63-
bytesize: int = serial.EIGHTBITS,
64-
parity: str = serial.PARITY_NONE,
65-
stopbits: int = serial.STOPBITS_ONE,
66-
timeout: int = 3,
67-
data_size: int = 1024,
68-
rs485_settings: dict = None,
60+
type=None,
61+
group=None,
62+
baudrate=None,
63+
bytesize=None,
64+
parity=None,
65+
stopbits=None,
66+
timeout=None,
67+
data_size=None,
68+
rs485_settings=None,
6969
) -> None:
7070
self.node = node
71-
self.type = type
72-
self.baudrate = baudrate
73-
self.bytesize = bytesize
74-
self.parity = parity
75-
self.stopbits = stopbits
76-
self.timeout = timeout
77-
self.data_size = data_size
78-
self.rs485_settings = rs485_settings
71+
self.type = type if type is not None else "USB"
72+
self.baudrate = baudrate if baudrate is not None else 115200
73+
self.bytesize = bytesize if bytesize is not None else serial.EIGHTBITS
74+
self.parity = parity if parity is not None else serial.PARITY_NONE
75+
self.stopbits = (
76+
stopbits if stopbits is not None else serial.STOPBITS_ONE
77+
)
78+
self.timeout = timeout if timeout is not None else 3
79+
self.data_size = data_size if data_size is not None else 1024
80+
self.rs485_settings = (
81+
rs485_settings if rs485_settings is not None else {}
82+
)
83+
self.rs485_settings = {
84+
"rts_level_for_tx": self.rs485_settings.get(
85+
"rts_level_for_tx", True
86+
),
87+
"rts_level_for_rx": self.rs485_settings.get(
88+
"rts_level_for_rx", False
89+
),
90+
"delay_before_tx": self.rs485_settings.get("delay_before_tx", 0.0),
91+
"delay_before_rx": self.rs485_settings.get("delay_before_rx", 0.0),
92+
}
93+
group = group if group is not None else []
7994
self.ser = self.serial_init(node)
8095
self.group = []
8196
for ser in group:
@@ -134,15 +149,15 @@ def generate_random_string(length):
134149

135150
def server_mode(
136151
node,
137-
type,
138-
group,
139-
baudrate,
140-
bytesize,
141-
parity,
142-
stopbits,
143-
timeout,
144-
datasize,
145-
rs485_settings,
152+
type=None,
153+
group=None,
154+
baudrate=None,
155+
bytesize=None,
156+
parity=None,
157+
stopbits=None,
158+
timeout=None,
159+
data_size=None,
160+
rs485_settings=None,
146161
) -> None:
147162
"""
148163
Running as a server, it will be sniffing for received string.
@@ -160,7 +175,7 @@ def server_mode(
160175
parity,
161176
stopbits,
162177
timeout,
163-
datasize,
178+
data_size,
164179
rs485_settings,
165180
)
166181
logging.info("Listening on port {} ...".format(ser.node))
@@ -175,15 +190,15 @@ def server_mode(
175190

176191
def client_mode(
177192
node,
178-
type,
179-
group,
180-
baudrate,
181-
bytesize,
182-
parity,
183-
stopbits,
184-
timeout,
185-
datasize,
186-
rs485_settings,
193+
type=None,
194+
group=None,
195+
baudrate=None,
196+
bytesize=None,
197+
parity=None,
198+
stopbits=None,
199+
timeout=None,
200+
data_size=1024,
201+
rs485_settings=None,
187202
):
188203
"""
189204
Running as a clinet and it will sending out a string and wait
@@ -202,15 +217,15 @@ def client_mode(
202217
parity,
203218
stopbits,
204219
timeout,
205-
datasize,
220+
data_size,
206221
rs485_settings,
207222
)
208223

209224
# clean up the garbage in the serial before test
210225
while ser.recv():
211226
continue
212227

213-
random_string = generate_random_string(datasize)
228+
random_string = generate_random_string(data_size)
214229
ser.send(random_string.encode())
215230
for i in range(1, 6):
216231
logging.info("Attempting receive string... {} time".format(i))
@@ -229,15 +244,15 @@ def client_mode(
229244

230245
def console_mode(
231246
node,
232-
type,
233-
group,
234-
baudrate,
235-
bytesize,
236-
parity,
237-
stopbits,
238-
timeout,
239-
datasize,
240-
rs485_settings,
247+
type=None,
248+
group=None,
249+
baudrate=None,
250+
bytesize=None,
251+
parity=None,
252+
stopbits=None,
253+
timeout=None,
254+
data_size=None,
255+
rs485_settings=None,
241256
):
242257
"""
243258
Test the serial port when it is in console mode
@@ -254,7 +269,7 @@ def console_mode(
254269
parity,
255270
stopbits,
256271
timeout,
257-
datasize,
272+
data_size,
258273
rs485_settings,
259274
)
260275
try:
@@ -291,20 +306,21 @@ def create_args():
291306
"--type",
292307
type=str,
293308
help="The type of serial port (e.g. RS485, RS422, RS232, USB)",
294-
default="USB",
309+
required=False,
295310
)
296311
parser.add_argument(
297312
"--group",
298313
type=str,
299314
help="The group of serial ports that needed to be brought up also",
300315
nargs="*",
301-
default=[],
316+
required=False,
302317
)
303318
parser.add_argument(
304319
"--baudrate",
305320
help="Baud rate for the serial ports",
306321
default=115200,
307322
type=int,
323+
required=False,
308324
)
309325
parser.add_argument(
310326
"--bytesize",
@@ -316,7 +332,7 @@ def create_args():
316332
],
317333
type=int,
318334
help="Bytesize",
319-
default=8,
335+
required=False,
320336
)
321337
parser.add_argument(
322338
"--parity",
@@ -329,26 +345,26 @@ def create_args():
329345
],
330346
type=lambda c: c.upper(),
331347
help="Parity",
332-
default="N",
348+
required=False,
333349
)
334350
parser.add_argument(
335351
"--stopbits",
336352
choices=[serial.STOPBITS_ONE, serial.STOPBITS_TWO],
337353
type=int,
338354
help="Stopbits",
339-
default=1,
355+
required=False,
340356
)
341357
parser.add_argument(
342358
"--datasize",
343359
type=int,
344360
help="Data size to send and receive",
345-
default=1024,
361+
required=False,
346362
)
347363
parser.add_argument(
348364
"--timeout",
349365
type=int,
350366
help="Timeout to receive",
351-
default=3,
367+
required=False,
352368
)
353369

354370
# Create RS485 subparser that only activates when --type=RS485
@@ -360,29 +376,25 @@ def create_args():
360376
choices=["True", "False"],
361377
type=str,
362378
help="RTS level for transmission." "Equal to RTS_ON_SEND",
363-
default="True",
364379
required=False,
365380
)
366381
rs485_group.add_argument(
367382
"--rts-level-for-rx",
368383
choices=["True", "False"],
369384
type=str,
370385
help="RTS level for reception." "Equal to RTS_AFTER_SEND",
371-
default="False",
372386
required=False,
373387
)
374388
rs485_group.add_argument(
375389
"--rts-delay-before-tx",
376390
type=float,
377391
help="Delay after setting RTS but before transmission starts.",
378-
default=0.0,
379392
required=False,
380393
)
381394
rs485_group.add_argument(
382395
"--rts-delay-before-rx",
383396
type=float,
384397
help="Delay after transmission ends and resetting RTS.",
385-
default=0.0,
386398
required=False,
387399
)
388400
return parser
@@ -393,15 +405,10 @@ def main():
393405
args = parser.parse_args()
394406

395407
init_logger()
396-
rs485_settings = {}
397408
if args.type == "RS485":
398409
rs485_settings = {
399-
"rts_level_for_tx": (
400-
True if args.rts_level_for_tx == "True" else False
401-
),
402-
"rts_level_for_rx": (
403-
True if args.rts_level_for_rx == "True" else False
404-
),
410+
"rts_level_for_tx": args.rts_level_for_tx,
411+
"rts_level_for_rx": args.rts_level_for_rx,
405412
"delay_before_tx": args.rts_delay_before_tx,
406413
"delay_before_rx": args.rts_delay_before_rx,
407414
}

0 commit comments

Comments
 (0)