Mbed Clock application using an NTP connection to get internet time and a terminal interface to send commands

Dependencies:   4DGL-uLCD-SE EthernetInterface NTPClient mbed-rtos mbed SDFileSystem wavfile

SpeechServerSource/grammar.xml

Committer:
dudanian
Date:
2014-12-09
Revision:
6:23c3adb0470d
Parent:
4:c4dfbf6b7f9f

File content as of revision 6:23c3adb0470d:

<grammar version="1.0" xml:lang="en-US" root="commands"
 xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">

  <rule id="commands">
    <one-of>
      <item> <ruleref uri="#setTime" /> <tag> out = rules.setTime; </tag> </item>
      <item> <ruleref uri="#setTimezone" /> <tag> out = rules.setTimezone; </tag> </item>
      <item> <ruleref uri="#setAlarm" /> <tag> out = rules.setAlarm; </tag> </item>
      <item> <ruleref uri="#setTimer" /> <tag> out = rules.setTimer; </tag> </item>
      <item> <ruleref uri="#deleteAlarm" /> <tag> out = rules.deleteAlarm; </tag> </item>
      <item> <ruleref uri="#syncNow" /> <tag> out = rules.syncNow; </tag> </item>
    </one-of>
  </rule>

  <rule id="setTime">
    <item> set </item>
    <item repeat="0-1"> the </item>
    <item> time </item>
    <item repeat="0-1"> to </item>
    <ruleref uri="#time" />
    <tag> out.command = "setTime"; </tag>
    <tag> out.time = rules.time; </tag>
  </rule>

  <rule id="setTimezone">
    <item> set </item>
    <item repeat="0-1"> the </item>
    <item> timezone </item>
    <item repeat="0-1"> to </item>
    <ruleref uri="#zone" />
    <tag> out.command = "setTimezone"; </tag>
    <tag> out.zone = rules.zone; </tag>
  </rule>

  <rule id="setAlarm">
    <item> set </item>
    <item repeat="0-1"> an </item>
    <item> alarm </item>
    <item repeat="0-1"> for </item>
    <ruleref uri="#time" />
    <tag> out.command = "setAlarm"; </tag>
    <tag> out.time = rules.time; </tag>
  </rule>

  <rule id="setTimer">
    <item> set </item>
    <item repeat="0-1"> an </item>
    <item> alarm </item>
    <item repeat="0-1"> for </item>
    <ruleref uri="#hoursminutes" />
    <tag> out.command = "setTimer"; </tag>
    <tag> out.length = rules.hoursminutes; </tag>
  </rule>

  <rule id="deleteAlarm">
    <item> delete </item>
    <item repeat="0-1"> the </item>
    <item> alarm </item>
    <tag> out.command = "deleteAlarm"; </tag>
  </rule>

  <rule id="syncNow">
    <item> sync </item>
    <item repeat="0-1"> the </item>
    <item repeat="0-1"> time </item>
    <item> now </item>
    <tag> out.command = "syncNow"; </tag>
  </rule>

  <rule id="time">
    <ruleref uri="#hour" />
    <ruleref uri="#minuteTime" />
    <ruleref uri="#period" />
    <tag> out.hour = rules.hour; </tag>
    <tag> out.minute = rules.minuteTime; </tag>
    <tag> out.period = rules.period; </tag>
  </rule>

  <rule id="hoursminutes">
    <one-of>
      <item> <ruleref uri="#hours" /> <tag> out.hour = rules.hours; out.minute = 0; </tag> </item>
      <item> <ruleref uri="#minutes" /> <tag> out.hour = 0; out.minute = rules.minutes </tag> </item>
      <item>
        <ruleref uri="#hours" />
        <item repeat="0-1"> and </item>
        <ruleref uri="#minutes" />
        <tag> out.hour = rules.hours; </tag>
        <tag> out.minute = rules.minutes; </tag>
      </item>
    </one-of>
  </rule>

  <rule id="hours">
    <ruleref uri="#hour" />
    <one-of>
      <item> hour </item>
      <item> hours </item>
    </one-of>
    <tag> out = rules.hour; </tag>
  </rule>

  <rule id="minutes">
    <ruleref uri="#minuteLength" />
    <one-of>
      <item> minute </item>
      <item> minutes </item>
    </one-of>
    <tag> out = rules.minuteLength; </tag>
  </rule>

  <rule id="hour">
    <one-of>
      <item> one    <tag> out = 1; </tag> </item>
      <item> two    <tag> out = 2; </tag> </item>
      <item> three  <tag> out = 3; </tag> </item>
      <item> four   <tag> out = 4; </tag> </item>
      <item> five   <tag> out = 5; </tag> </item>
      <item> six    <tag> out = 6; </tag> </item>
      <item> seven  <tag> out = 7; </tag> </item>
      <item> eight  <tag> out = 8; </tag> </item>
      <item> nine   <tag> out = 9; </tag> </item>
      <item> ten    <tag> out = 10; </tag> </item>
      <item> eleven <tag> out = 11; </tag> </item>
      <item> twelve <tag> out = 12; </tag> </item>
    </one-of>
  </rule>

  <rule id="minuteTime">
    <one-of>
      <item> <ruleref uri="#minute2" /> <tag> out = rules.minute2; </tag> </item>
      <item> <ruleref uri="#minute3" /> <tag> out = rules.minute3; </tag> </item>
    </one-of>
  </rule>

  <rule id="minuteLength">
    <one-of>
      <item> <ruleref uri="#minute1" /> <tag> out = rules.minute1; </tag> </item>
      <item> <ruleref uri="#minute3" /> <tag> out = rules.minute3; </tag> </item>
    </one-of>
  </rule>

  <rule id="minute1">
    <one-of>
      <item> zero         <tag> out = 0; </tag> </item>
      <item> one          <tag> out = 1; </tag> </item>
      <item> two          <tag> out = 2; </tag> </item>
      <item> three        <tag> out = 3; </tag> </item>
      <item> four         <tag> out = 4; </tag> </item>
      <item> five         <tag> out = 5; </tag> </item>
      <item> six          <tag> out = 6; </tag> </item>
      <item> seven        <tag> out = 7; </tag> </item>
      <item> eight        <tag> out = 8; </tag> </item>
      <item> nine         <tag> out = 9; </tag> </item>
      <item> sixty        <tag> out = 60; </tag> </item>
    </one-of>
  </rule>

  <rule id="minute2">
    <one-of>
      <item> o'clock      <tag> out = 0; </tag> </item>
      <item> o'one        <tag> out = 1; </tag> </item>
      <item> o'two        <tag> out = 2; </tag> </item>
      <item> o'three      <tag> out = 3; </tag> </item>
      <item> o'four       <tag> out = 4; </tag> </item>
      <item> o'five       <tag> out = 5; </tag> </item>
      <item> o'six        <tag> out = 6; </tag> </item>
      <item> o'seven      <tag> out = 7; </tag> </item>
      <item> o'eight      <tag> out = 8; </tag> </item>
      <item> o'nine       <tag> out = 9; </tag> </item>
    </one-of>
  </rule>

  <rule id="minute3">
    <one-of>
      <item> ten          <tag> out = 10; </tag> </item>
      <item> eleven       <tag> out = 11; </tag> </item>
      <item> twelve       <tag> out = 12; </tag> </item>
      <item> thirteen     <tag> out = 13; </tag> </item>
      <item> fourteen     <tag> out = 14; </tag> </item>
      <item> fifteen      <tag> out = 15; </tag> </item>
      <item> sixteen      <tag> out = 16; </tag> </item>
      <item> seventeen    <tag> out = 17; </tag> </item>
      <item> eighteen     <tag> out = 18; </tag> </item>
      <item> nineteen     <tag> out = 19; </tag> </item>
      <item> twenty       <tag> out = 20; </tag> </item>
      <item> twentyone    <tag> out = 21; </tag> </item>
      <item> twentytwo    <tag> out = 22; </tag> </item>
      <item> twentythree  <tag> out = 23; </tag> </item>
      <item> twentyfour   <tag> out = 24; </tag> </item>
      <item> twentyfive   <tag> out = 25; </tag> </item>
      <item> twentysix    <tag> out = 26; </tag> </item>
      <item> twentyseven  <tag> out = 27; </tag> </item>
      <item> twentyeight  <tag> out = 28; </tag> </item>
      <item> twentynine   <tag> out = 29; </tag> </item>
      <item> thirty       <tag> out = 30; </tag> </item>
      <item> thirtyone    <tag> out = 31; </tag> </item>
      <item> thirtytwo    <tag> out = 32; </tag> </item>
      <item> thirtythree  <tag> out = 33; </tag> </item>
      <item> thirtyfour   <tag> out = 34; </tag> </item>
      <item> thirtyfive   <tag> out = 35; </tag> </item>
      <item> thirtysix    <tag> out = 36; </tag> </item>
      <item> thirtyseven  <tag> out = 37; </tag> </item>
      <item> thirtyeight  <tag> out = 38; </tag> </item>
      <item> thirtynine   <tag> out = 39; </tag> </item>
      <item> fourty       <tag> out = 40; </tag> </item>
      <item> fourtyone    <tag> out = 41; </tag> </item>
      <item> fourtytwo    <tag> out = 42; </tag> </item>
      <item> fourtythree  <tag> out = 43; </tag> </item>
      <item> fourtyfour   <tag> out = 44; </tag> </item>
      <item> fourtyfive   <tag> out = 45; </tag> </item>
      <item> fourtysix    <tag> out = 46; </tag> </item>
      <item> fourtyseven  <tag> out = 47; </tag> </item>
      <item> fourtyeight  <tag> out = 48; </tag> </item>
      <item> fourtynine   <tag> out = 49; </tag> </item>
      <item> fifty        <tag> out = 50; </tag> </item>
      <item> fiftyone     <tag> out = 51; </tag> </item>
      <item> fiftytwo     <tag> out = 52; </tag> </item>
      <item> fiftythree   <tag> out = 53; </tag> </item>
      <item> fiftyfour    <tag> out = 54; </tag> </item>
      <item> fiftyfive    <tag> out = 55; </tag> </item>
      <item> fiftysix     <tag> out = 56; </tag> </item>
      <item> fiftyseven   <tag> out = 57; </tag> </item>
      <item> fiftyeight   <tag> out = 58; </tag> </item>
      <item> fiftynine    <tag> out = 59; </tag> </item>
    </one-of>
  </rule>

  <rule id="period">
    <one-of>
      <item> AM <tag> out = 0; </tag> </item>
      <item> PM <tag> out = 1; </tag> </item>
    </one-of>
  </rule>

  <rule id="zone">
    <one-of>
      <item> UTC <tag> out = 0; </tag> </item>
      <item> EST <tag> out = -5; </tag> </item>
      <item> MST <tag> out = -6; </tag> </item>
      <item> CST <tag> out = -7; </tag> </item>
      <item> PST <tag> out = -8; </tag> </item>
    </one-of>
  </rule>
</grammar>