Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: dlms_comms.cpp
- Revision:
- 7:cfe1e0eafb7e
- Parent:
- 6:70460dcbc43c
- Child:
- 8:595258a79939
diff -r 70460dcbc43c -r cfe1e0eafb7e dlms_comms.cpp
--- a/dlms_comms.cpp Tue Nov 11 18:17:52 2014 +0000
+++ b/dlms_comms.cpp Tue Nov 11 19:19:47 2014 +0000
@@ -8,7 +8,8 @@
// Instantiate the raw serial (2nd uart) Tx then Rx
RawSerial rs485(PA_9, PA_10);
// pin to switch the rs485 buffer direction
- DigitalOut dir_485 (PB_0);
+ DigitalOut dir_485 (PB_0);
+//bool dir_485 = 0;
/** ---------------------------------------------------------------------------
* @brief C O N S T R U C T O R
@@ -23,21 +24,38 @@
rx_tail_ptr = 0;
memset (rx_buffer, 0, sizeof(rx_buffer));
-// // attach the receiver input to 'run' a method
-// // when characters received
- rs485.attach(this,
- &dlms_comms::Rx_interrupt,
- RawSerial::RxIrq);
// transmit empty flag .. need to set buffer
// in receive mode again after we have transmitted
// all data characters
// rs485.attach(this,
// &dlms_comms::Tx_interrupt,
-// RawSerial::TxIrq);
-// timer = NULL;
+// //RawSerial::TxIrq
+// Serial::TxIrq);
+
+ // attach the receiver input to 'run' a method
+ rs485.attach(NULL, Serial::TxIrq);
+
+ // when characters received
+ rs485.attach(this,
+ &dlms_comms::Rx_interrupt,
+ //RawSerial::RxIrq
+ Serial::RxIrq);
+ timer = NULL;
debug_uart = NULL;
tx_irq_count = 0l;
rx_irq_count = 0l;
+
+
+ /** Set the flow control type on the serial port
+ *
+ * @param type the flow control type (Disabled, RTS, CTS, RTSCTS)
+ * @param flow1 the first flow control pin (RTS for RTS or RTSCTS, CTS for CTS)
+ * @param flow2 the second flow control pin (CTS for RTSCTS)
+ */
+// rs485.set_flow_control(RTSCTS , //Flow type,
+// dir_485, //PB_0, //PinName flow1=NC,
+// dir_485 //PB_0 //PinName flow2=NC
+// );
}
/** ---------------------------------------------------------------------------
* @brief bq34z110::init_port_expander Put all ports in INPUT mode
@@ -51,7 +69,7 @@
debug_uart = parent_uart;
timer = parent_timer;
//#ifdef DEBUG_DLMS_COMMS
- debug_uart->printf (" init_dlms_comms..\r\n");
+ //debug_uart->printf (" init_dlms_comms..\r\n");
//#endif
}
/** ---------------------------------------------------------------------------
@@ -97,10 +115,10 @@
rs485.format((int) bits,
my_parity,
(int) stop_bits);
-# ifdef DEBUG_DLMS_COMMS
- debug_uart->printf (" init_dlms_comms..Baudrate (%d) %d bits Parity=%c\r\n",
- baudrate, bits, parity);
-# endif
+//# ifdef DEBUG_DLMS_COMMS
+ //debug_uart->printf (" init_dlms_comms..Baudrate (%d) %d bits Parity=%c\r\n",
+ // baudrate, bits, parity);
+//# endif
// dummy send packet to rs485
//send_packet ("\r\nHello cruel world\r\n",12);
if ( rs485.readable())
@@ -122,8 +140,8 @@
tx_irq_count++;
// enable the receiver, we are finito with the transmission of characters
// this changes the direction on the transceiver buffer
- if (dir_485 == 1)
- dir_485 = 0;
+ rs485.attach(NULL, Serial::RxIrq);
+ dir_485 = 0;
}
/** ---------------------------------------------------------------------------
* @brief dlms_comms::Rx_interrupt . This method received all characters from
@@ -186,6 +204,10 @@
{
rs485.putc (*tmp_ptr++);
}
+ rs485.attach(this,
+ &dlms_comms::Tx_interrupt,
+ //RawSerial::TxIrq
+ Serial::TxIrq);
}
UINT_64 dlms_comms::ret_rx_irq_count (void)
{