2016-09-10 20:14:16 +00:00
|
|
|
/*
|
|
|
|
* main.c
|
|
|
|
* mocktest
|
|
|
|
*
|
|
|
|
* Created by Jeremy Rand on 2016-09-10.
|
|
|
|
* Copyright (c) 2016 Jeremy Rand. All rights reserved.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2016-10-01 03:06:47 +00:00
|
|
|
#include <stdbool.h>
|
2016-09-10 20:14:16 +00:00
|
|
|
#include <stdio.h>
|
2016-10-01 03:06:47 +00:00
|
|
|
#include <stdint.h>
|
2016-09-10 20:14:16 +00:00
|
|
|
#include <conio.h>
|
2016-12-18 04:32:03 +00:00
|
|
|
#include <mouse.h>
|
2016-09-10 20:14:16 +00:00
|
|
|
|
2016-10-01 03:06:47 +00:00
|
|
|
#include "mockingboard.h"
|
2018-10-19 00:48:31 +00:00
|
|
|
#include "drivers/a2_mouse_drv.h"
|
2016-10-01 03:06:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
tMockingSoundRegisters soundData1 = {
|
|
|
|
{ TONE_PERIOD_A(4), 0, 0 }, // Tone period for the three channels
|
|
|
|
MIN_NOISE_PERIOD, // Noise period
|
|
|
|
ENABLE_CHANNEL(TONE_CHANNEL_A), // Enable
|
|
|
|
{ MAX_AMPLITUDE, MIN_AMPLITUDE, MIN_AMPLITUDE }, // Amplitude for the three channels
|
|
|
|
MIN_ENVELOPE_PERIOD, // Envelope period
|
|
|
|
ENVELOPE_SHAPE_ONE_SHOT_DECAY, // Envelope shape
|
|
|
|
0, // Dummy1
|
|
|
|
0 // Dummy2
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
tMockingSoundRegisters soundData2 = {
|
|
|
|
{ TONE_PERIOD_F_SHARP(3), 0, 0 }, // Tone period for the three channels
|
|
|
|
MIN_NOISE_PERIOD, // Noise period
|
|
|
|
ENABLE_CHANNEL(TONE_CHANNEL_A), // Enable
|
|
|
|
{ MAX_AMPLITUDE, MIN_AMPLITUDE, MIN_AMPLITUDE }, // Amplitude for the three channels
|
|
|
|
MIN_ENVELOPE_PERIOD, // Envelope period
|
|
|
|
ENVELOPE_SHAPE_ONE_SHOT_DECAY, // Envelope shape
|
|
|
|
0, // Dummy1
|
|
|
|
0 // Dummy2
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-10-06 02:54:39 +00:00
|
|
|
uint8_t mySpeechData[] = {
|
|
|
|
0xE8, 0x70, 0xA8, 0x5F, 0x00, 0xE8, 0x70, 0xA8,
|
|
|
|
0x5F, 0x00, 0xE8, 0x70, 0xA8, 0x5F, 0x00, 0xE8,
|
|
|
|
0x7B, 0xA8, 0x5F, 0x63, 0xE7, 0x6B, 0xA8, 0x59,
|
|
|
|
0x47, 0xE8, 0x6A, 0xA8, 0x61, 0x36, 0xE8, 0x79,
|
|
|
|
0xA8, 0x65, 0x37, 0xE7, 0x79, 0xA8, 0x69, 0x0E,
|
|
|
|
0xE7, 0x6A, 0xA8, 0x61, 0x29, 0xE8, 0x6B, 0xA8,
|
|
|
|
0x59, 0xAD, 0xE8, 0x6B, 0xA8, 0x51, 0xC0, 0xE8,
|
|
|
|
0x6A, 0xA8, 0x51, 0x07, 0xE8, 0x6A, 0xA8, 0x4B,
|
|
|
|
0x39, 0xE8, 0x6A, 0xA8, 0x49, 0x64, 0xE7, 0x6A,
|
|
|
|
0x88, 0x49, 0x11, 0xE7, 0x5A, 0xB8, 0x51, 0x63,
|
|
|
|
0xE7, 0x5A, 0xB8, 0x59, 0x1D, 0xE8, 0x7A, 0xA8,
|
|
|
|
0x61, 0x65, 0xE8, 0x79, 0xA8, 0x61, 0xC0, 0xE8,
|
|
|
|
0x70, 0x78, 0x51, 0x00, 0xE8, 0x70, 0x78, 0x51,
|
|
|
|
0x00, 0xE8, 0x70, 0x78, 0x59, 0x00, 0xE7, 0x79,
|
|
|
|
0xA8, 0x65, 0x04, 0xE7, 0x6A, 0x98, 0x61, 0x16,
|
|
|
|
0xE8, 0x6B, 0xA8, 0x61, 0x60, 0xE8, 0x7C, 0xA8,
|
|
|
|
0x59, 0x78, 0xE7, 0x7C, 0xA8, 0x55, 0x0A, 0xE8,
|
|
|
|
0x6B, 0xA8, 0x62, 0x33, 0xE8, 0x6A, 0xA8, 0x59,
|
|
|
|
0x1C, 0xE8, 0x7A, 0xA8, 0x51, 0x64, 0xE7, 0x7B,
|
|
|
|
0x88, 0x51, 0x01, 0xE8, 0x7C, 0xA8, 0x59, 0x30,
|
|
|
|
0xE8, 0x7D, 0xA8, 0x59, 0x27, 0xE7, 0x7D, 0x78,
|
|
|
|
0x61, 0x01, 0xE8, 0x6C, 0xA8, 0x61, 0x28, 0xE8,
|
|
|
|
0x6B, 0xA8, 0x59, 0x32, 0xE8, 0x6A, 0xA8, 0x4D,
|
|
|
|
0x60, 0xE7, 0x29, 0xA8, 0x41, 0x0A, 0xE8, 0x78,
|
|
|
|
0xA8, 0x41, 0x30, 0xE8, 0x70, 0xA8, 0x39, 0xFF,
|
2016-12-23 05:54:24 +00:00
|
|
|
0xE8, 0x70, 0xA8, 0x39, 0x00
|
2016-10-01 03:06:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void delay(void)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < 1000; i++) ;
|
|
|
|
}
|
|
|
|
|
2016-09-10 20:14:16 +00:00
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
2016-12-16 05:00:33 +00:00
|
|
|
mockingBoardInit(4, false);
|
2016-10-01 03:06:47 +00:00
|
|
|
|
2016-09-10 20:14:16 +00:00
|
|
|
printf("HELLO, WORLD!\n");
|
2016-10-01 03:06:47 +00:00
|
|
|
|
|
|
|
while (!kbhit()) {
|
2016-12-19 03:46:43 +00:00
|
|
|
mockingBoardPlaySound(SPEAKER_LEFT, &soundData1);
|
2016-10-01 03:06:47 +00:00
|
|
|
delay();
|
2016-12-19 03:46:43 +00:00
|
|
|
mockingBoardStopSound(SPEAKER_LEFT);
|
2016-10-01 03:06:47 +00:00
|
|
|
|
2016-12-19 03:46:43 +00:00
|
|
|
mockingBoardPlaySound(SPEAKER_RIGHT, &soundData2);
|
2016-10-01 03:06:47 +00:00
|
|
|
delay();
|
2016-12-19 03:46:43 +00:00
|
|
|
mockingBoardStopSound(SPEAKER_RIGHT);
|
2016-10-01 03:06:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
cgetc();
|
|
|
|
printf("RUN SPEECH TEST (Y/N) ");
|
2016-12-16 05:00:33 +00:00
|
|
|
if (cgetc() == 'Y') {
|
2016-12-18 04:32:03 +00:00
|
|
|
bool mouseInstalled = false;
|
|
|
|
|
2016-12-16 05:00:33 +00:00
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
mockingBoardInit(4, true);
|
2016-12-18 04:32:03 +00:00
|
|
|
|
2018-10-19 00:48:31 +00:00
|
|
|
if (mouse_install(&mouse_def_callbacks, &a2_mouse_drv) == 0) {
|
2016-12-18 04:32:03 +00:00
|
|
|
mouseInstalled = true;
|
|
|
|
}
|
|
|
|
|
2016-12-16 05:00:33 +00:00
|
|
|
mockingBoardSpeak(mySpeechData, sizeof(mySpeechData));
|
|
|
|
while (mockingBoardSpeechIsBusy()) {
|
2016-12-18 04:32:03 +00:00
|
|
|
if (mouseInstalled) {
|
|
|
|
struct mouse_info mouseInfo;
|
|
|
|
|
|
|
|
mouse_info(&mouseInfo);
|
|
|
|
printf("X:%3d Y:%3d %s\n", mouseInfo.pos.x, mouseInfo.pos.y,
|
|
|
|
((mouseInfo.buttons != 0) ? "PRESSED" : ""));
|
|
|
|
}
|
2016-12-16 05:00:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
printf("\nDone speaking\n");
|
|
|
|
cgetc();
|
2016-12-18 04:32:03 +00:00
|
|
|
|
|
|
|
if (mouseInstalled)
|
|
|
|
mouse_uninstall();
|
2016-10-06 02:54:39 +00:00
|
|
|
}
|
2016-10-01 03:06:47 +00:00
|
|
|
|
2016-12-16 05:00:33 +00:00
|
|
|
mockingBoardShutdown();
|
2016-10-01 03:06:47 +00:00
|
|
|
|
2016-09-10 20:14:16 +00:00
|
|
|
return 0;
|
|
|
|
}
|