summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-10-06 21:09:54 +0200
committerSebastian Reichel <sre@ring0.de>2012-10-06 21:09:54 +0200
commitd70dcb4f20d1c52add759ed4ec5ccbf7131de069 (patch)
tree64db0591701c57fa49e39cdb7a71cb22e2b46551
parent4bc20854220c7fbfb655a6ed476d12cdafce2f2d (diff)
downloadserial-barcode-scanner-d70dcb4f20d1c52add759ed4ec5ccbf7131de069.tar.bz2
Add full audio support (Closes: GH-13)
-rw-r--r--sounds/user/beep/LICENSE24
-rw-r--r--sounds/user/beep/error/buzzer.oggbin0 -> 27153 bytes
-rw-r--r--sounds/user/beep/login/toycaralarm.oggbin0 -> 8737 bytes
-rw-r--r--sounds/user/beep/logout/cha ching.oggbin0 -> 31476 bytes
-rw-r--r--sounds/user/beep/purchase/beep.oggbin0 -> 5665 bytes
-rw-r--r--sounds/user/beep/purchase/camera.oggbin0 -> 14605 bytes
-rw-r--r--sounds/user/dude/LICENSE19
-rw-r--r--sounds/user/dude/error/I broke something.oggbin0 -> 76434 bytes
-rw-r--r--sounds/user/dude/login/hey dude, whats up man.oggbin0 -> 57447 bytes
-rw-r--r--sounds/user/dude/logout/bye.oggbin0 -> 27610 bytes
-rw-r--r--sounds/user/dude/purchase/yeah man.oggbin0 -> 38743 bytes
-rw-r--r--sounds/user/girlfriend/LICENSE39
-rw-r--r--sounds/user/girlfriend/error/no, no, forget it.oggbin0 -> 26872 bytes
-rw-r--r--sounds/user/girlfriend/login/hello.oggbin0 -> 9918 bytes
-rw-r--r--sounds/user/girlfriend/login/we need to talk about this.oggbin0 -> 37918 bytes
-rw-r--r--sounds/user/girlfriend/logout/get out, get outta here.oggbin0 -> 29444 bytes
-rw-r--r--sounds/user/girlfriend/logout/i dont have time for this.oggbin0 -> 34138 bytes
-rw-r--r--sounds/user/girlfriend/logout/why dont you just leave then.oggbin0 -> 35918 bytes
-rw-r--r--sounds/user/girlfriend/purchase/code accepted.oggbin0 -> 17678 bytes
-rw-r--r--sounds/user/girlfriend/purchase/yeah so what.oggbin0 -> 25896 bytes
-rw-r--r--sounds/user/robot/LICENSE19
-rw-r--r--sounds/user/robot/error/critical error.oggbin0 -> 21345 bytes
-rw-r--r--sounds/user/robot/login/login accepted.oggbin0 -> 32165 bytes
-rw-r--r--sounds/user/robot/logout/terminating.oggbin0 -> 18148 bytes
-rw-r--r--sounds/user/robot/purchase/accepted.oggbin0 -> 16324 bytes
-rw-r--r--sounds/user/sexy/LICENSE39
-rw-r--r--sounds/user/sexy/error/error.oggbin0 -> 15582 bytes
-rw-r--r--sounds/user/sexy/login/welcome back sexy bitch.oggbin0 -> 56041 bytes
-rw-r--r--sounds/user/sexy/logout/well if thats how you feel.oggbin0 -> 36308 bytes
-rw-r--r--sounds/user/sexy/logout/what about me.oggbin0 -> 26986 bytes
-rw-r--r--sounds/user/sexy/purchase/do it again.oggbin0 -> 65485 bytes
-rw-r--r--sounds/user/sexy/purchase/what is next.oggbin0 -> 19297 bytes
-rw-r--r--sounds/user/sexy/purchase/yes, master.oggbin0 -> 24812 bytes
-rw-r--r--sounds/user/sexy/purchase/your will is my command.oggbin0 -> 41467 bytes
-rw-r--r--src/audio.vala41
-rw-r--r--src/main.vala5
-rw-r--r--src/scannersession.vala36
37 files changed, 206 insertions, 16 deletions
diff --git a/sounds/user/beep/LICENSE b/sounds/user/beep/LICENSE
new file mode 100644
index 0000000..a0acd3d
--- /dev/null
+++ b/sounds/user/beep/LICENSE
@@ -0,0 +1,24 @@
+Files: error/buzzer.ogg
+Source: http://www.freesound.org/people/guitarguy1985/sounds/54047/
+Copyright: 2008, guitarguy1985
+License: CC-0
+
+Files: login/toycaralarm.ogg
+Source: http://www.freesound.org/people/AMPUL/sounds/29723/
+Copyright: 2007, AMPUL
+License: Sampling+
+
+Files: logout/cha ching.ogg
+Source: http://www.freesound.org/people/creek23/sounds/75235/
+Copyright: 2009, creek23
+License: CC-BY-3.0
+
+Files: purchase/camera.ogg
+Source: http://www.freesound.org/people/FreqMan/sounds/42899/
+Copyright: 2007, FreqMan
+License: CC-BY-3.0
+
+Files: purchase/beep.ogg
+Source: http://www.freesound.org/people/KorgMS2000B/sounds/54415/
+Copyright: 2008, KorgMS2000B
+License: Sampling+
diff --git a/sounds/user/beep/error/buzzer.ogg b/sounds/user/beep/error/buzzer.ogg
new file mode 100644
index 0000000..eebd2fa
--- /dev/null
+++ b/sounds/user/beep/error/buzzer.ogg
Binary files differ
diff --git a/sounds/user/beep/login/toycaralarm.ogg b/sounds/user/beep/login/toycaralarm.ogg
new file mode 100644
index 0000000..817a4c9
--- /dev/null
+++ b/sounds/user/beep/login/toycaralarm.ogg
Binary files differ
diff --git a/sounds/user/beep/logout/cha ching.ogg b/sounds/user/beep/logout/cha ching.ogg
new file mode 100644
index 0000000..4c6d88d
--- /dev/null
+++ b/sounds/user/beep/logout/cha ching.ogg
Binary files differ
diff --git a/sounds/user/beep/purchase/beep.ogg b/sounds/user/beep/purchase/beep.ogg
new file mode 100644
index 0000000..e3dbad4
--- /dev/null
+++ b/sounds/user/beep/purchase/beep.ogg
Binary files differ
diff --git a/sounds/user/beep/purchase/camera.ogg b/sounds/user/beep/purchase/camera.ogg
new file mode 100644
index 0000000..41373d4
--- /dev/null
+++ b/sounds/user/beep/purchase/camera.ogg
Binary files differ
diff --git a/sounds/user/dude/LICENSE b/sounds/user/dude/LICENSE
new file mode 100644
index 0000000..3b65ddd
--- /dev/null
+++ b/sounds/user/dude/LICENSE
@@ -0,0 +1,19 @@
+Files: error/I broke something.ogg
+Source: http://www.freesound.org/people/ecfike/sounds/154574/
+Copyright: ecfike
+License: CC-0
+
+Files: login/hey dude, whats up man.ogg
+Source: http://www.freesound.org/people/ecfike/sounds/154619/
+Copyright: ecfike
+License: CC-0
+
+Files: logout/bye.ogg
+Source: http://www.freesound.org/people/ecfike/sounds/154546/
+Copyright: ecfike
+License: CC-0
+
+Files: purchase/yeah man.ogg
+Source: http://www.freesound.org/people/ecfike/sounds/154582/
+Copyright: ecfike
+License: CC-0
diff --git a/sounds/user/dude/error/I broke something.ogg b/sounds/user/dude/error/I broke something.ogg
new file mode 100644
index 0000000..ae8c298
--- /dev/null
+++ b/sounds/user/dude/error/I broke something.ogg
Binary files differ
diff --git a/sounds/user/dude/login/hey dude, whats up man.ogg b/sounds/user/dude/login/hey dude, whats up man.ogg
new file mode 100644
index 0000000..8b6d7b5
--- /dev/null
+++ b/sounds/user/dude/login/hey dude, whats up man.ogg
Binary files differ
diff --git a/sounds/user/dude/logout/bye.ogg b/sounds/user/dude/logout/bye.ogg
new file mode 100644
index 0000000..de62d3b
--- /dev/null
+++ b/sounds/user/dude/logout/bye.ogg
Binary files differ
diff --git a/sounds/user/dude/purchase/yeah man.ogg b/sounds/user/dude/purchase/yeah man.ogg
new file mode 100644
index 0000000..b3c2d09
--- /dev/null
+++ b/sounds/user/dude/purchase/yeah man.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/LICENSE b/sounds/user/girlfriend/LICENSE
new file mode 100644
index 0000000..9153012
--- /dev/null
+++ b/sounds/user/girlfriend/LICENSE
@@ -0,0 +1,39 @@
+Files: error/no, no, forget it.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86427/
+Copyright: 2009, epanody
+License: CC-BY-3.0
+
+Files: login/hello.ogg
+Source: http://www.freesound.org/people/epanody/sounds/97830/
+Copyright: 2010, epanody
+License: CC-BY-3.0
+
+Files: login/we need to talk about this.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86454/
+Copyright: 2009, epanody
+License: CC-BY-3.0
+
+Files: logout/get out, get outta here.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86409/
+Copyrigt: 2009, epanody
+License: CC-BY-3.0
+
+Files: logout/why dont you just leave then.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86463/
+Copyrigt: 2009, epanody
+License: CC-BY-3.0
+
+Files: logout/i dont have time for this.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86386/
+Copyrigt: 2009, epanody
+License: CC-BY-3.0
+
+Files: purchase/code accepted.ogg
+Source: http://www.freesound.org/people/epanody/sounds/97827/
+Copyright: 2010, epanody
+License: CC-BY-3.0
+
+Files: purchase/yeah so what.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86468/
+Copyright: 2010, epanody
+License: CC-BY-3.0
diff --git a/sounds/user/girlfriend/error/no, no, forget it.ogg b/sounds/user/girlfriend/error/no, no, forget it.ogg
new file mode 100644
index 0000000..825f24b
--- /dev/null
+++ b/sounds/user/girlfriend/error/no, no, forget it.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/login/hello.ogg b/sounds/user/girlfriend/login/hello.ogg
new file mode 100644
index 0000000..7c76e4d
--- /dev/null
+++ b/sounds/user/girlfriend/login/hello.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/login/we need to talk about this.ogg b/sounds/user/girlfriend/login/we need to talk about this.ogg
new file mode 100644
index 0000000..2df048f
--- /dev/null
+++ b/sounds/user/girlfriend/login/we need to talk about this.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/logout/get out, get outta here.ogg b/sounds/user/girlfriend/logout/get out, get outta here.ogg
new file mode 100644
index 0000000..c305d26
--- /dev/null
+++ b/sounds/user/girlfriend/logout/get out, get outta here.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/logout/i dont have time for this.ogg b/sounds/user/girlfriend/logout/i dont have time for this.ogg
new file mode 100644
index 0000000..77b0fce
--- /dev/null
+++ b/sounds/user/girlfriend/logout/i dont have time for this.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/logout/why dont you just leave then.ogg b/sounds/user/girlfriend/logout/why dont you just leave then.ogg
new file mode 100644
index 0000000..eac83c8
--- /dev/null
+++ b/sounds/user/girlfriend/logout/why dont you just leave then.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/purchase/code accepted.ogg b/sounds/user/girlfriend/purchase/code accepted.ogg
new file mode 100644
index 0000000..34dc3d4
--- /dev/null
+++ b/sounds/user/girlfriend/purchase/code accepted.ogg
Binary files differ
diff --git a/sounds/user/girlfriend/purchase/yeah so what.ogg b/sounds/user/girlfriend/purchase/yeah so what.ogg
new file mode 100644
index 0000000..c488a26
--- /dev/null
+++ b/sounds/user/girlfriend/purchase/yeah so what.ogg
Binary files differ
diff --git a/sounds/user/robot/LICENSE b/sounds/user/robot/LICENSE
new file mode 100644
index 0000000..ac119af
--- /dev/null
+++ b/sounds/user/robot/LICENSE
@@ -0,0 +1,19 @@
+Files: error/critical error.ogg
+Source: http://www.freesound.org/people/liquidhot/sounds/23514/
+Copyright: 2009, liquidhot
+License: CC-BY-3.0
+
+Files: login/login accepted.ogg
+Source: http://www.freesound.org/people/liquidhot/sounds/23516/
+Copyright: 2006, liquidhot
+License: CC-BY-3.0
+
+Files: logout/terminating.ogg
+Source: http://www.freesound.org/people/liquidhot/sounds/23513/
+Copyright: 2006, liquidhot
+License: CC-BY-3.0
+
+Files: purchase/code accepted.ogg
+Source: http://www.freesound.org/people/epanody/sounds/97827/
+Copyright: 2010, epanody
+License: CC-BY-3.0
diff --git a/sounds/user/robot/error/critical error.ogg b/sounds/user/robot/error/critical error.ogg
new file mode 100644
index 0000000..f3abfcd
--- /dev/null
+++ b/sounds/user/robot/error/critical error.ogg
Binary files differ
diff --git a/sounds/user/robot/login/login accepted.ogg b/sounds/user/robot/login/login accepted.ogg
new file mode 100644
index 0000000..90e0e48
--- /dev/null
+++ b/sounds/user/robot/login/login accepted.ogg
Binary files differ
diff --git a/sounds/user/robot/logout/terminating.ogg b/sounds/user/robot/logout/terminating.ogg
new file mode 100644
index 0000000..dccb6d6
--- /dev/null
+++ b/sounds/user/robot/logout/terminating.ogg
Binary files differ
diff --git a/sounds/user/robot/purchase/accepted.ogg b/sounds/user/robot/purchase/accepted.ogg
new file mode 100644
index 0000000..b980230
--- /dev/null
+++ b/sounds/user/robot/purchase/accepted.ogg
Binary files differ
diff --git a/sounds/user/sexy/LICENSE b/sounds/user/sexy/LICENSE
new file mode 100644
index 0000000..99238dc
--- /dev/null
+++ b/sounds/user/sexy/LICENSE
@@ -0,0 +1,39 @@
+Files: error/error.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/56097/
+Copyright: 2008, Corsica_S
+License: CC-BY-3.0
+
+Files: login/welcome back sexy bitch.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/99889/
+Copyright: 2010, Corsica_S
+License: CC-BY-3.0
+
+Files: logout/what about me.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86457/
+Copyright: 2010, Corsica_S
+License: CC-BY-3.0
+
+Files: logout/well if thats how you feel.ogg
+Source: http://www.freesound.org/people/epanody/sounds/86456/
+Copyright: 2010, Corsica_S
+License: CC-BY-3.0
+
+Files: purchase/yes, master.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/107555/
+Copyright: 2010, Corsica_S
+License: CC-BY-3.0
+
+Files: purchase/your will is my command.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/107556/
+Copyright: 2012, Corsica_S
+License: CC-BY-3.0
+
+Files: purchase/do it again.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/95235/
+Copyright: 2010, Corsica_S
+License: CC-BY-3.0
+
+Files: purchase/what is next.ogg
+Source: http://www.freesound.org/people/Corsica_S/sounds/72257/
+Copyright: 2009, Corsica_S
+License: CC-BY-3.0
diff --git a/sounds/user/sexy/error/error.ogg b/sounds/user/sexy/error/error.ogg
new file mode 100644
index 0000000..bd0f41d
--- /dev/null
+++ b/sounds/user/sexy/error/error.ogg
Binary files differ
diff --git a/sounds/user/sexy/login/welcome back sexy bitch.ogg b/sounds/user/sexy/login/welcome back sexy bitch.ogg
new file mode 100644
index 0000000..77fc7ac
--- /dev/null
+++ b/sounds/user/sexy/login/welcome back sexy bitch.ogg
Binary files differ
diff --git a/sounds/user/sexy/logout/well if thats how you feel.ogg b/sounds/user/sexy/logout/well if thats how you feel.ogg
new file mode 100644
index 0000000..30fb42c
--- /dev/null
+++ b/sounds/user/sexy/logout/well if thats how you feel.ogg
Binary files differ
diff --git a/sounds/user/sexy/logout/what about me.ogg b/sounds/user/sexy/logout/what about me.ogg
new file mode 100644
index 0000000..9ed10db
--- /dev/null
+++ b/sounds/user/sexy/logout/what about me.ogg
Binary files differ
diff --git a/sounds/user/sexy/purchase/do it again.ogg b/sounds/user/sexy/purchase/do it again.ogg
new file mode 100644
index 0000000..6465c60
--- /dev/null
+++ b/sounds/user/sexy/purchase/do it again.ogg
Binary files differ
diff --git a/sounds/user/sexy/purchase/what is next.ogg b/sounds/user/sexy/purchase/what is next.ogg
new file mode 100644
index 0000000..e3d3927
--- /dev/null
+++ b/sounds/user/sexy/purchase/what is next.ogg
Binary files differ
diff --git a/sounds/user/sexy/purchase/yes, master.ogg b/sounds/user/sexy/purchase/yes, master.ogg
new file mode 100644
index 0000000..f0723a1
--- /dev/null
+++ b/sounds/user/sexy/purchase/yes, master.ogg
Binary files differ
diff --git a/sounds/user/sexy/purchase/your will is my command.ogg b/sounds/user/sexy/purchase/your will is my command.ogg
new file mode 100644
index 0000000..3f07616
--- /dev/null
+++ b/sounds/user/sexy/purchase/your will is my command.ogg
Binary files differ
diff --git a/src/audio.vala b/src/audio.vala
index e30f3b1..eeff7b1 100644
--- a/src/audio.vala
+++ b/src/audio.vala
@@ -15,6 +15,7 @@
public class AudioPlayer {
private dynamic Gst.Element p;
+ string path;
public signal void end_of_stream();
@@ -29,13 +30,49 @@ public class AudioPlayer {
}
public AudioPlayer() {
+ path = Environment.get_current_dir()+"/sounds/";
p = Gst.ElementFactory.make("playbin", "play");
p.get_bus().add_watch(bus_callback);
}
- public void play(string file) {
+ public void play_system(string file) {
p.set_state(Gst.State.NULL);
- p.uri = "file://"+Environment.get_current_dir()+"/sounds/"+file;
+ p.uri = "file://" + path + "system/"+file;
+ p.set_state(Gst.State.PLAYING);
+ }
+
+ private string[] get_files(string dir) {
+ try {
+ var directory = File.new_for_path(dir);
+ var enumerator = directory.enumerate_children(FileAttribute.STANDARD_NAME, 0);
+ string[] result = {};
+
+ FileInfo file_info;
+ while ((file_info = enumerator.next_file ()) != null) {
+ result += file_info.get_name();
+ }
+
+ return result;
+ } catch (Error e) {
+ write_to_log("Error: %s\n", e.message);
+ return {};
+ }
+ }
+
+ private string get_random_file(string dir) {
+ var files = get_files(dir);
+ var index = Random.int_range(0, files.length);
+ return files[index];
+ }
+
+ public string get_random_user_theme() {
+ return get_random_file(path + "user/");
+ }
+
+ public void play_user(string theme, string type) {
+ p.set_state(Gst.State.NULL);
+ var file = get_random_file(path + "user/" + theme+ "/" + type);
+ p.uri = "file://" + path + "user/" + theme+ "/" + type + "/" + file;
p.set_state(Gst.State.PLAYING);
}
}
diff --git a/src/main.vala b/src/main.vala
index aadafe7..7f9d3c1 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -62,6 +62,7 @@ public static int main(string[] args) {
db = new Database("shop.db");
audio = new AudioPlayer();
loop = new MainLoop();
+ localsession = new ScannerSession();
dev.received_barcode.connect((data) => {
if(localsession.interpret(data))
@@ -69,7 +70,7 @@ public static int main(string[] args) {
});
write_to_log("KtT Shop System has been started");
- audio.play("system/startup.ogg");
+ audio.play_system("startup.ogg");
/* attach webserver to mainloop */
new WebServer();
@@ -78,7 +79,7 @@ public static int main(string[] args) {
loop.run();
write_to_log("Stopping Shop System");
- audio.play("system/shutdown.ogg");
+ audio.play_system("shutdown.ogg");
/* we need to run the mainloop to play audio */
audio.end_of_stream.connect(() => { loop.quit(); });
diff --git a/src/scannersession.vala b/src/scannersession.vala
index e286387..7f19b77 100644
--- a/src/scannersession.vala
+++ b/src/scannersession.vala
@@ -34,6 +34,11 @@ public class ScannerSession {
private set;
default = false;
}
+ public string theme {
+ get;
+ private set;
+ default = "beep";
+ }
public void logout() {
logged_in = false;
@@ -48,6 +53,7 @@ public class ScannerSession {
return false;
}
this.logged_in = true;
+ this.theme = audio.get_random_user_theme();
return true;
}
@@ -62,7 +68,7 @@ public class ScannerSession {
/* check if scannerdata has valid format */
if(scannerdata != "USER %d".printf(id)) {
- audio.play("system/error.ogg");
+ audio.play_system("error.ogg");
write_to_log("Error: Invalid User ID: %s", scannerdata);
return false;
}
@@ -73,11 +79,11 @@ public class ScannerSession {
}
if(login(id)) {
- /* TODO: play audio */
+ audio.play_user(theme, "login");
write_to_log("Login: %s (%d)", name, user);
return true;
} else {
- audio.play("system/error.ogg");
+ audio.play_system("error.ogg");
write_to_log("Error: Login failed (User ID = %d)", id);
return false;
}
@@ -88,33 +94,33 @@ public class ScannerSession {
}
if(login(0)) {
- /* TODO: play audio */
+ audio.play_user(theme, "login");
write_to_log("Login: %s (%d)", name, user);
return true;
} else {
- audio.play("system/error.ogg");
+ audio.play_system("error.ogg");
write_to_log("Error: Login failed (User ID = 0)");
return false;
}
} else if(scannerdata == "UNDO") {
if(!logged_in) {
- audio.play("system/error.ogg");
+ audio.play_system("error.ogg");
write_to_log("Error: Can't undo if not logged in!");
return false;
} else {
if(db.undo(user)) {
- /* TODO: play audio */
+ audio.play_user(theme, "purchase");
write_to_log("Undo last purchase!");
return true;
} else {
- /* TODO: play audio */
+ audio.play_user(theme, "error");
write_to_log("Error: Couldn't undo last purchase!");
return false;
}
}
} else if(scannerdata == "LOGOUT") {
if(logged_in) {
- /* TODO: play audio */
+ audio.play_user(theme, "logout");
write_to_log("Logout!");
logout();
return true;
@@ -126,19 +132,25 @@ public class ScannerSession {
/* check if scannerdata has valid format */
if(scannerdata != "%llu".printf(id)) {
- /* TODO: play audio */
+ audio.play_user(theme, "error");
write_to_log("Error: invalid product: %s", scannerdata);
return false;
}
+ if(!logged_in) {
+ audio.play_system("error.ogg");
+ write_to_log("Error: Login Required!");
+ return false;
+ }
+
if(db.buy(user, id)) {
- /* TODO: play audio */
+ audio.play_user(theme, "purchase");
var name = db.get_product_name(id);
var price = db.get_product_price(user, id);
write_to_log(@"article bought: $name ($price €)");
return true;
} else {
- /* TODO: play audio */
+ audio.play_user(theme, "error");
write_to_log("Error: purchase failed!");
return false;
}