New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add set_baud() method to UARTSerial(). #4615

Merged
merged 1 commit into from Jul 24, 2017

Conversation

Projects
None yet
6 participants
@RobMeades
Contributor

RobMeades commented Jun 22, 2017

Description

Add a set_baud() method to UARTSerial(), simply handing it on to SerialBase:baud(). See #4609 for reasons why this is necessary.

With this in place the CellularInterface can instantiate the file handle it requires with UARTSerial() running at a baud rate of 115200 (which all modems can be relied upon to auto-baud at). Then, once the modem is up and running, it can send the modem an AT+IPR command giving a higher baud rate that the modem supports but would not be able to auto-baud at (e.g. 460800). This way we can get nice fast connections.

This has been tested on the u-blox C030 board with a Sara-U201 modem, eventually running at 460800 bits/s.

@RobMeades

This comment has been minimized.

Contributor

RobMeades commented Jun 22, 2017

@kjbracey-arm, @hasnainvirk: thought I'd propose this, though am happy for you to propose a different solution if you prefer.

@0xc0170 0xc0170 requested a review from hasnainvirk Jun 22, 2017

@0xc0170

This comment has been minimized.

Member

0xc0170 commented Jul 4, 2017

@0xc0170

This comment has been minimized.

Member

0xc0170 commented Jul 4, 2017

retest uvisor

*
* @param baud The baud rate
*/
void set_baud(int baud);

This comment has been minimized.

@theotherjimmy

theotherjimmy Jul 10, 2017

Contributor

Could you use the baud method from SerialBase instead?

This comment has been minimized.

@RobMeades

RobMeades Jul 11, 2017

Contributor

@kjbracey-arm: Kevin, are you OK with the convention of simply calling in the SerialBase method rather than having the intermediate that adds 'set_'?

This comment has been minimized.

@0xc0170

0xc0170 Jul 11, 2017

Member

The question is why SerialBase is inherited privately?

This comment has been minimized.

@RobMeades

RobMeades Jul 11, 2017

Contributor

A philosophical/religious question for @kjbracey-arm I think...

This comment has been minimized.

@kjbracey-arm

kjbracey-arm Jul 12, 2017

Contributor

It's private because if any user messes with the underlying port while we're using it, it could break us - at least if they go anywhere near the core data functions.

This is a driver that uses the underlying serial port itself - I don't want to expose it to the users of this class so they can freely touch it. Making it a public base class would expose more than I want.

In this particular case "baud" could directly pass through, as we don't care (beyond maybe it being a good idea to drain the output buffer?).

But "set_flow_control" we would potentially want to implement ourself rather than pass through to provide XON/XOFF or manual HW control.

There's existing inconsistency on the "set_" prefix ("baud" vs "set_flow_control"), so it seems reasonable to unify on the "set_" to me.

General note - we are currently lacking is a "serial control" abstract interface for these things (baud, format, flow control, hup) - each of the buffered serial, the raw serial, and the serial mux should all be providing that as a common interface.

This comment has been minimized.

@0xc0170

0xc0170 Jul 12, 2017

Member

There's existing inconsistency on the "set_" prefix ("baud" vs "set_flow_control"), so it seems reasonable to unify on the "set_" to me.

General note - we are currently lacking is a "serial control" abstract interface for these things (baud, format, flow control, hup) - each of the buffered serial, the raw serial, and the serial mux should all be providing that as a common interface.

+1

Thanks for the explanation @kjbracey-arm

@theotherjimmy

I meant to request changes, my bad.

@RobMeades

This comment has been minimized.

Contributor

RobMeades commented Jul 10, 2017

I was sorta following the convention that UARTSerial() had adopted by having set_ in front of set things, @kjbracey-arm does a similar thing in a branch-about-to-become-a-PR-near-you.

@hasnainvirk

Looks good to me. Convention has been to prefix the method name by set_ , I am happy with it.

@theotherjimmy

This comment has been minimized.

Contributor

theotherjimmy commented Jul 17, 2017

/morph test

@mbed-bot

This comment has been minimized.

mbed-bot commented Jul 18, 2017

Result: SUCCESS

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 827

All builds and test passed!

@0xc0170 0xc0170 added ready for merge and removed needs: CI labels Jul 18, 2017

@theotherjimmy theotherjimmy merged commit c1e455c into ARMmbed:master Jul 24, 2017

4 checks passed

Cam-CI uvisor Build & Test Success
Details
ci/morph-test Job has completed
Details
continuous-integration/jenkins/pr-head This commit looks good
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment