SP03 Text to Speech Synthesizer

Revision:
0:2326b6172834
Child:
1:58ab657cd515
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SP03.cpp	Wed May 07 13:52:08 2014 +0000
@@ -0,0 +1,49 @@
+#include "SP03.h"
+
+SP03::SP03(PinName sda, PinName scl): i2c_bus(sda,scl)
+{
+    i2c_bus.frequency(CLOCK_RATE);
+}
+
+void SP03::_speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch)
+{
+    char speakout[2];
+    speakout[0] = REGISTER_FOR_COMMAND;
+    speakout[1] = SPEAK_OUT_THE_BUFFER;
+    int length = 6 + strlen(message);
+    char _message[length];
+    _message[0] = REGISTER_FOR_COMMAND;
+    _message[1] = 0x00;
+    _message[2] = volume;
+    _message[3] = speed;
+    _message[4] = pitch;
+    for (int i = 5; i < length; i++)
+        _message[i] = message[i - 5];
+    i2c_bus.write(DEFAULT_ADDRESS, _message, length);
+    i2c_bus.write(DEFAULT_ADDRESS, speakout, 2);
+}
+
+void SP03::Speak(const char message[])
+{
+    _speak(message, SmartLab_SP03::NORMAL, SmartLab_SP03::MAX, DEFAULT_SPEECH_PITCH);
+}
+
+void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume)
+{
+    _speak(message, speed, volume, DEFAULT_SPEECH_PITCH);
+}
+
+void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch)
+{
+    _speak(message, speed, volume, pitch);
+}
+
+bool SP03::IsSpeaking()
+{
+    char m[1]= {REGISTER_FOR_COMMAND};
+    i2c_bus.write(DEFAULT_ADDRESS,m ,1);
+    i2c_bus.read(DEFAULT_ADDRESS, m, 1);
+    if (m[0] == 0x00)
+        return false;
+    else return true;
+}
\ No newline at end of file