[haiku-commits] haiku: hrev49801 - src/apps/serialconnect

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 10 Nov 2015 09:56:27 +0100 (CET)

hrev49801 adds 1 changeset to branch 'master'
old head: d3b6b9e5f7114eecc9dd67532b58d5b78b8dc4e9
new head: 534d0e61604615ea815216883dc70cf3c9f7cf12
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=534d0e616046+%5Ed3b6b9e5f711

----------------------------------------------------------------------------

534d0e616046: SerialConnect: allow to change line terminator

* It can now be used to send AT commands for example, which need \r
instead of \n.

[ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision: hrev49801
Commit: 534d0e61604615ea815216883dc70cf3c9f7cf12
URL: http://cgit.haiku-os.org/haiku/commit/?id=534d0e616046
Author: Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date: Tue Nov 10 08:55:48 2015 UTC

----------------------------------------------------------------------------

4 files changed, 53 insertions(+), 4 deletions(-)
src/apps/serialconnect/SerialWindow.cpp | 34 ++++++++++++++++++++++++++++-
src/apps/serialconnect/SerialWindow.h | 3 ++-
src/apps/serialconnect/TermView.cpp | 14 +++++++++++-
src/apps/serialconnect/TermView.h | 6 ++++-

----------------------------------------------------------------------------

diff --git a/src/apps/serialconnect/SerialWindow.cpp
b/src/apps/serialconnect/SerialWindow.cpp
index 1d88b31..d47c05c 100644
--- a/src/apps/serialconnect/SerialWindow.cpp
+++ b/src/apps/serialconnect/SerialWindow.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2012-2014, Adrien Destugues, pulkomandy@xxxxxxxxxxxxx
+ * Copyright 2012-2015, Adrien Destugues, pulkomandy@xxxxxxxxxxxxx
* Distributed under the terms of the MIT licence.
*/

@@ -116,6 +116,9 @@ SerialWindow::SerialWindow()
fDatabitsMenu->SetRadioMode(true);
settingsMenu->AddItem(fDatabitsMenu);

+ fLineTerminatorMenu = new BMenu("Line terminator");
+ fLineTerminatorMenu->SetRadioMode(true);
+ settingsMenu->AddItem(fLineTerminatorMenu);

BMessage* message = new BMessage(kMsgSettings);
message->AddInt32("parity", B_NO_PARITY);
@@ -195,6 +198,22 @@ SerialWindow::SerialWindow()
fFlowcontrolMenu->AddItem(noFlow);
fFlowcontrolMenu->SetTargetForItems(be_app);

+ message = new BMessage(kMsgSettings);
+ message->AddString("terminator", "\n");
+ BMenuItem* lf = new BMenuItem("LF (\\n)", message);
+
+ message = new BMessage(kMsgSettings);
+ message->AddString("terminator", "\r");
+ BMenuItem* cr = new BMenuItem("CR (\\r)", message);
+
+ message = new BMessage(kMsgSettings);
+ message->AddString("terminator", "\r\n");
+ BMenuItem* crlf = new BMenuItem("CR/LF (\\r\\n)", message);
+
+ fLineTerminatorMenu->AddItem(lf);
+ fLineTerminatorMenu->AddItem(cr);
+ fLineTerminatorMenu->AddItem(crlf);
+
CenterOnScreen();
}

@@ -283,6 +302,7 @@ void SerialWindow::MessageReceived(BMessage* message)
data_bits dataBits;
parity_mode parity;
uint32 flowcontrol;
+ BString terminator;

if (message->FindInt32("databits", (int32*)&dataBits)
== B_OK) {
for (int i = 0; i <
fDatabitsMenu->CountItems(); i++) {
@@ -341,6 +361,18 @@ void SerialWindow::MessageReceived(BMessage* message)
}
}

+ if (message->FindString("terminator", &terminator) ==
B_OK) {
+ fTermView->SetLineTerminator(terminator);
+ for (int i = 0; i <
fLineTerminatorMenu->CountItems(); i++) {
+ BMenuItem* item =
fLineTerminatorMenu->ItemAt(i);
+ BString code;
+
item->Message()->FindString("terminator", &code);
+
+ if (terminator == code)
+ item->SetMarked(true);
+ }
+ }
+
return;
}
}
diff --git a/src/apps/serialconnect/SerialWindow.h
b/src/apps/serialconnect/SerialWindow.h
index b6c9352..186ac69 100644
--- a/src/apps/serialconnect/SerialWindow.h
+++ b/src/apps/serialconnect/SerialWindow.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2012-2014, Adrien Destugues, pulkomandy@xxxxxxxxxxxxx
+ * Copyright 2012-2015, Adrien Destugues, pulkomandy@xxxxxxxxxxxxx
* Distributed under the terms of the MIT licence.
*/

@@ -31,6 +31,7 @@ class SerialWindow: public BWindow
BMenu*
fParityMenu;
BMenu*
fFlowcontrolMenu;
BMenu*
fBaudrateMenu;
+ BMenu*
fLineTerminatorMenu;
BFilePanel*
fLogFilePanel;

static const int kBaudrates[];
diff --git a/src/apps/serialconnect/TermView.cpp
b/src/apps/serialconnect/TermView.cpp
index 9fd2433..ce9cca3 100644
--- a/src/apps/serialconnect/TermView.cpp
+++ b/src/apps/serialconnect/TermView.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2012-2014, Adrien Destugues, pulkomandy@xxxxxxxxx
+ * Copyright 2012-2015, Adrien Destugues, pulkomandy@xxxxxxxxx
* Distributed under the terms of the MIT licence.
*/

@@ -184,6 +184,10 @@ TermView::KeyDown(const char* bytes, int32 numBytes)
numBytes = 1;
bytes = "\x7F";
break;
+ case '\n':
+ numBytes = fLineTerminator.Length();
+ bytes = fLineTerminator.String();
+ break;
}

// Send the bytes to the serial port
@@ -215,6 +219,13 @@ TermView::MessageReceived(BMessage* message)


void
+TermView::SetLineTerminator(BString terminator)
+{
+ fLineTerminator = terminator;
+}
+
+
+void
TermView::PushBytes(const char* bytes, size_t length)
{
vterm_push_bytes(fTerm, bytes, length);
@@ -255,6 +266,7 @@ TermView::_Init()
background.alpha = 255;

SetViewColor(background);
+ SetLineTerminator("\n");
}


diff --git a/src/apps/serialconnect/TermView.h
b/src/apps/serialconnect/TermView.h
index c42f8ca..c432507 100644
--- a/src/apps/serialconnect/TermView.h
+++ b/src/apps/serialconnect/TermView.h
@@ -1,9 +1,10 @@
/*
- * Copyright 2012-2014, Adrien Destugues, pulkomandy@xxxxxxxxx
+ * Copyright 2012-2015, Adrien Destugues, pulkomandy@xxxxxxxxx
* Distributed under the terms of the MIT licence.
*/


+#include <String.h>
#include <View.h>

extern "C" {
@@ -24,6 +25,7 @@ class TermView: public BView
void GetPreferredSize(float* width,
float* height);
void KeyDown(const char* bytes,
int32 numBytes);
void MessageReceived(BMessage*
message);
+ void SetLineTerminator(BString
bytes);

void PushBytes(const char* bytes,
const size_t length);

@@ -56,6 +58,8 @@ class TermView: public BView
int fFontWidth;
int fFontHeight;

+ BString fLineTerminator;
+
static const VTermScreenCallbacks sScreenCallbacks;

static const int kDefaultWidth = 80;


Other related posts:

  • » [haiku-commits] haiku: hrev49801 - src/apps/serialconnect - pulkomandy