diff --git a/src/apps/serialconnect/SerialApp.cpp b/src/apps/serialconnect/SerialApp.cpp index 8b8c167d64..73ca7836ed 100644 --- a/src/apps/serialconnect/SerialApp.cpp +++ b/src/apps/serialconnect/SerialApp.cpp @@ -135,69 +135,7 @@ void SerialApp::MessageReceived(BMessage* message) fSerialPort.SetFlowControl(flowcontrol); if(message->FindInt32("baudrate", &baudrate) == B_OK) { - data_rate rate; - switch(baudrate) { - case 50: - rate = B_50_BPS; - break; - case 75: - rate = B_75_BPS; - break; - case 110: - rate = B_110_BPS; - break; - case 134: - rate = B_134_BPS; - break; - case 150: - rate = B_150_BPS; - break; - case 200: - rate = B_200_BPS; - break; - case 300: - rate = B_300_BPS; - break; - case 600: - rate = B_600_BPS; - break; - case 1200: - rate = B_1200_BPS; - break; - case 1800: - rate = B_1800_BPS; - break; - case 2400: - rate = B_2400_BPS; - break; - case 4800: - rate = B_4800_BPS; - break; - case 9600: - rate = B_9600_BPS; - break; - case 19200: - rate = B_19200_BPS; - break; - case 31250: - rate = B_31250_BPS; - break; - case 38400: - rate = B_38400_BPS; - break; - case 57600: - rate = B_57600_BPS; - break; - case 115200: - rate = B_115200_BPS; - break; - case 230400: - rate = B_230400_BPS; - break; - default: - rate = B_0_BPS; - break; - } + data_rate rate = (data_rate)baudrate; fSerialPort.SetDataRate(rate); } @@ -275,7 +213,7 @@ status_t SerialApp::PollSerial(void*) { ssize_t bytesRead; - bytesRead = application->fSerialPort.Read(buffer, 256); + bytesRead = application->fSerialPort.Read(buffer, sizeof(buffer)); if (bytesRead == B_FILE_ERROR) { // Port is not open - wait for it and start over diff --git a/src/apps/serialconnect/SerialWindow.cpp b/src/apps/serialconnect/SerialWindow.cpp index 06b1f3a57d..aa60936fe0 100644 --- a/src/apps/serialconnect/SerialWindow.cpp +++ b/src/apps/serialconnect/SerialWindow.cpp @@ -24,6 +24,15 @@ const int SerialWindow::kBaudrates[] = { 50, 75, 110, 134, 150, 200, 300, 600, }; +// The values for these constants are not in the expected order, so we have to +// rely on this lookup table if we want to keep the menu items sorted. +const int SerialWindow::kBaudrateConstants[] = { B_50_BPS, B_75_BPS, B_110_BPS, + B_134_BPS, B_150_BPS, B_200_BPS, B_300_BPS, B_600_BPS, B_1200_BPS, + B_1800_BPS, B_2400_BPS, B_4800_BPS, B_9600_BPS, B_19200_BPS, B_31250_BPS, + B_38400_BPS, B_57600_BPS, B_115200_BPS, B_230400_BPS +}; + + const char* SerialWindow::kWindowTitle = "SerialConnect"; @@ -135,7 +144,7 @@ SerialWindow::SerialWindow() for (int i = sizeof(kBaudrates) / sizeof(char*); --i >= 0;) { message = new BMessage(kMsgSettings); - message->AddInt32("baudrate", kBaudrates[i]); + message->AddInt32("baudrate", kBaudrateConstants[i]); char buffer[7]; sprintf(buffer,"%d", kBaudrates[i]); @@ -323,7 +332,7 @@ void SerialWindow::MessageReceived(BMessage* message) int32 code; item->Message()->FindInt32("baudrate", &code); - if(code == kBaudrates[baudrate]) + if(baudrate == code) item->SetMarked(true); } } diff --git a/src/apps/serialconnect/SerialWindow.h b/src/apps/serialconnect/SerialWindow.h index 4bd3816434..58fdaa251f 100644 --- a/src/apps/serialconnect/SerialWindow.h +++ b/src/apps/serialconnect/SerialWindow.h @@ -32,5 +32,6 @@ class SerialWindow: public BWindow BFilePanel* fLogFilePanel; static const int kBaudrates[]; + static const int kBaudrateConstants[]; static const char* kWindowTitle; };