summaryrefslogtreecommitdiffstats
path: root/src/scanner-session/scannersession.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/scanner-session/scannersession.vala')
-rw-r--r--src/scanner-session/scannersession.vala19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/scanner-session/scannersession.vala b/src/scanner-session/scannersession.vala
index 6926ba9..5d87cc8 100644
--- a/src/scanner-session/scannersession.vala
+++ b/src/scanner-session/scannersession.vala
@@ -23,13 +23,17 @@ public class ScannerSessionImplementation {
private Database db;
private AudioPlayer audio;
+ private SerialDevice dev;
public signal void msg(MessageType type, string message);
public ScannerSessionImplementation() {
try {
db = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.Database", "/io/mainframe/shopsystem/database");
+ dev = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.SerialDevice", "/io/mainframe/shopsystem/device");
audio = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.AudioPlayer", "/io/mainframe/shopsystem/audio");
+
+ dev.received_barcode.connect(handle_barcode);
} catch(IOError e) {
error("IOError: %s\n", e.message);
}
@@ -46,7 +50,7 @@ public class ScannerSessionImplementation {
logged_in = false;
}
- private bool login(int user) {
+ private bool login(int user) throws IOError {
this.user = user;
try {
this.name = db.get_username(user);
@@ -60,7 +64,18 @@ public class ScannerSessionImplementation {
return true;
}
- private bool interpret(string scannerdata) {
+ private void handle_barcode(string scannerdata) {
+ try {
+ if(interpret(scannerdata))
+ dev.blink(1000);
+ } catch(IOError e) {
+ send_message(MessageType.ERROR, "IOError: %s", e.message);
+ } catch(DatabaseError e) {
+ send_message(MessageType.ERROR, "DatabaseError: %s", e.message);
+ }
+ }
+
+ private bool interpret(string scannerdata) throws DatabaseError, IOError {
if(scannerdata.has_prefix("USER ")) {
string str_id = scannerdata.substring(5);
int32 id = int.parse(str_id);