Improve error handling and reporting in the LED pattern parser
[led-pattern-ed] / src / led-pattern.vala
index 25f1ae5..fe3446c 100644 (file)
  * along with LED Pattern Editor. If not, see <http://www.gnu.org/licenses/>.
  */
 
-class LedPattern : Object {
+errordomain LedPatternError {
+       INVALID_PATTERN;
+}
+
+abstract class LedPattern : Object {
        enum ScreenOn {
                DISPLAY_OFF = 0,
                DISPLAY_ON = 1,
@@ -33,6 +37,9 @@ class LedPattern : Object {
 
        public double duration;
 
+       public abstract string dump ();
+       public abstract void parse (string line) throws LedPatternError;
+
        public signal void changed ();
 }
 
@@ -41,8 +48,10 @@ enum CommandType {
        RESET_MUX,
        SET_PWM,
        RAMP_WAIT,
-       REPEAT,
-       STOP
+       GO_TO_START,
+       BRANCH,
+       END,
+       TRIGGER
 }
 
 class LedCommand : Object {
@@ -70,6 +79,17 @@ class LedCommand : Object {
                changed ();
        }
 
+       public virtual void go_to_start () {
+               type = CommandType.GO_TO_START;
+               changed ();
+       }
+
+       public virtual void end (bool reset) {
+               type = CommandType.END;
+               steps = reset ? -255 : 0;
+               changed ();
+       }
+
        public signal void changed ();
 }