return s1 * 10 + s2;
}
+int parse_score(char ch2, char ch3)
+{
+ int s2 = parse_digit(ch2);
+ int s3 = parse_digit(ch3);
+ return s2 * 10 + s3;
+}
+
int parse_score(char ch1, char ch2, char ch3)
{
int s1 = parse_digit(ch1);
return s1 * 100 + s2 * 10 + s3;
}
+int parse_score_weird(char ch1, char ch2, char ch3)
+{
+ char str[4];
+ char *ptr = str;
+ if (ch1 != ' ') *ptr++ = ch1;
+ if (ch2 != ' ') *ptr++ = ch2;
+ if (ch3 != ' ') *ptr++ = ch3;
+ *ptr++ = 0;
+
+ return atoi(str);
+}
+
+
void MainWindow::bt6000_message_received(const string &msg, int port)
{
fprintf(stderr, "BT6000 message: '%s' (port %d)\n", msg.c_str(), port);
set_score_clicked();
}
}
+ if (msg.size() >= 9 && msg[0] == 'G' && msg[1] == '1' && msg[2] == '0') {
+ // G10: Game clock, score, period?
+ bool clock_running = !(msg[3] & 0x02);
+// bool klaxon = (msg[3] & 0x04);
+ int minutes = parse_clock(msg[4], msg[5]);
+ int seconds = parse_clock(msg[6], msg[7]);
+ int score1 = parse_score_weird(msg[8], msg[9], msg[10]);
+ int score2 = parse_score_weird(msg[11], msg[12], msg[13]);
+
+ map<string, string> param;
+ ws->send_command("update " + serialize_as_json(param));
+
+ if (port == 6002) {
+ map<string, string> param;
+ param["score1"] = to_string(score1);
+ param["score2"] = to_string(score2);
+ ws->send_command("update " + serialize_as_json(param));
+ ws->send_command("eval setscore3()");
+ } else if (port == 6001) {
+ map<string, string> param;
+ param["score1"] = to_string(score1);
+ param["score2"] = to_string(score2);
+ ws->send_command("update " + serialize_as_json(param));
+ ws->send_command("eval setscore2()");
+ } else {
+ map<string, string> param;
+ param["clock_min"] = to_string(minutes);
+ param["clock_sec"] = to_string(seconds);
+ ws->send_command("update " + serialize_as_json(param));
+ ui->score_1_box->setValue(score1);
+ ui->score_2_box->setValue(score2);
+ set_score_clicked();
+ }
+ if (port == 6002) {
+ ws->send_command("eval adjustclockfromstate(2)");
+ if (clock_running) {
+ ws->send_command("eval startclock(2)");
+ } else {
+ ws->send_command("eval stopclock(2)");
+ }
+ } else if (port == 6001) {
+ ws->send_command("eval adjustclockfromstate(1)");
+ if (clock_running) {
+ ws->send_command("eval startclock(1)");
+ } else {
+ ws->send_command("eval stopclock(1)");
+ }
+ } else {
+ ws->send_command("eval adjustclockfromstate(0)");
+ if (clock_running) {
+ ws->send_command("eval startclock(0)");
+ } else {
+ ws->send_command("eval stopclock(0)");
+ }
+ }
+ }
// Ignore type 3 (penalties) and type 4 (timeouts).
}