[chirp_devel] [GE-PCS] adding support for ge pcs, odd handshaking
I'm considering writing a new radio driver from scratch for older GE/Ericsson PCS radios. As usual, they have a proprietary, ancient dos-only program. I was able to reverse engineer enough of the serial protocol to come up with these details: http://pastebin.com/3jD6NESu
I'm reading over the example radio driver (template.py), but I have a question on how to do multi-baudrate handshaking: That is, this radio seems to require me to send a null-byte at 300 baud, then switch to 1200 baud for regular programming. The radio is unresponsive to anything unless I handshake/reset with this.
So question - is it possible to switch baudrates, and how could I approach this?
On a few side notes - a developer wiki page for basic getting started would be welcome, e.g., for programming a new driver, look at template.py and chirp_common.py.. This wasn't obvious and even then, some things arent fully explained. A wiki page outlining a high-level approach to writing a new driver would be awsome. Also, was thinking it would be helpful to have a wiki page on techniques for reverse engineering radio programming protocols, such as using "serial port monitor" etc.
-Jens
Ok looking at tmv71.py code, seems like I could do something like this in __init__?
self.pipe.setBaudrate(300) self.pipe.write("\x00") self.pipe.setBaudrate(1200) ....
?
________________________________ From: Jens J. kd4tjx@yahoo.com To: "chirp_devel@intrepid.danplanet.com" chirp_devel@intrepid.danplanet.com Sent: Friday, July 26, 2013 5:34 PM Subject: [chirp_devel] [GE-PCS] adding support for ge pcs, odd handshaking
I'm considering writing a new radio driver from scratch for older GE/Ericsson PCS radios. As usual, they have a proprietary, ancient dos-only program. I was able to reverse engineer enough of the serial protocol to come up with these details: http://pastebin.com/3jD6NESu
I'm reading over the example radio driver (template.py), but I have a question on how to do multi-baudrate handshaking: That is, this radio seems to require me to send a null-byte at 300 baud, then switch to 1200 baud for regular programming. The radio is unresponsive to anything unless I handshake/reset with this.
So question - is it possible to switch baudrates, and how could I approach this?
On a few side notes - a developer wiki page for basic getting started would be welcome, e.g., for programming a new driver, look at template.py and chirp_common.py.. This wasn't obvious and even then, some things arent fully explained. A wiki page outlining a high-level approach to writing a new driver would be awsome. Also, was thinking it would be helpful to have a wiki page on techniques for reverse engineering radio programming protocols, such as using "serial port monitor" etc.
-Jens _______________________________________________ chirp_devel mailing list chirp_devel@intrepid.danplanet.com http://intrepid.danplanet.com/mailman/listinfo/chirp_devel Developer docs: http://chirp.danplanet.com/projects/chirp/wiki/Developers
Ok looking at tmv71.py code, seems like I could do something like this in __init__?
self.pipe.setBaudrate(300) self.pipe.write("\x00") self.pipe.setBaudrate(1200) ....
Yeah, but it's better to do that during the clone in and out part, as there are places in the code that need to instantiate a driver without it talking to the radio at all. Depending on the way your radio works, it'd be best to try to make it a clone-mode driver, where you stuck down the entire memory and put it back, instead of doing it memory-by-memory, if that's feasible. Then, you do your negotiation and such in the upload and download routines.
participants (2)
-
Dan Smith
-
Jens J.