-
- glk_schannel_set_volume(sc, 0x10000);
- glk_schannel_set_volume(sc, 0x08000);
- glk_schannel_set_volume(sc, 0x04000);
- glk_schannel_set_volume(sc, 0x00000);
- glk_schannel_set_volume(sc, 0xA0000); /* max supported volume */
- glk_schannel_set_volume(sc, 0xB0000); /* should be coerced */
- glk_schannel_set_volume(sc, 0x10000);
-
+
+ /* Open the main window. */
+ winid_t mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, 1);
+ if (!mainwin) {
+ /* It's possible that the main window failed to open. There's
+ nothing we can do without it, so exit. */
+ return;
+ }
+
+ char buffer[1024];
+ int len;
+ int finish = 0;
+
+ event_t ev;
+ while(!finish) {
+ glk_put_string("\nprompt> ");
+ glk_request_line_event(mainwin, buffer, 1024, 0);
+ glk_select(&ev);
+ printf("Received event:\n");
+ printf("Type: %d\n", ev.type);
+ printf("Win: %d\n", glk_window_get_rock(ev.win) );
+ printf("Var1: %d\n", ev.val1);
+ printf("Var2: %d\n", ev.val2);
+ switch(ev.type) {
+ case evtype_LineInput:
+ // Null-terminate string
+ len = ev.val1;
+ buffer[len] = '\0';
+
+ if(strcmp(buffer, "quit") == 0) {
+ glk_put_string("That's all, folks.\n");
+ finish = 1;
+ } else if(strcmp(buffer, "play") == 0) {
+ glk_put_string("Playing sound.\n");
+ if(!glk_schannel_play(sc, 3)) {
+ fprintf(stderr, "Could not start sound channel.\n");
+ finish = 1;
+ }
+ } else if(strcmp(buffer, "help") == 0) {
+ glk_put_string("Type PLAY or QUIT.\n");
+ }
+ break;
+ case evtype_SoundNotify:
+ glk_put_string("\nGot sound notify event!\n");
+ break;
+ default:
+ ;
+ }
+ }
+
+ glk_schannel_stop(sc);