public void listProperties(CTextSurface lcd)
    {
        if (m_blocks.count() == 0)
        {
            return;
        }
        List <ITerminalProperty> properties = new List <ITerminalProperty>();

        m_blocks.blocks()[0].GetProperties(properties);
        foreach (var property in properties)
        {
            lcd.echo($"id: {property.Id}, type: {property.TypeName}");
        }
    }
    public void listActions(CTextSurface lcd)
    {
        if (m_blocks.count() == 0)
        {
            return;
        }
        List <ITerminalAction> actions = new List <ITerminalAction>();

        m_blocks.blocks()[0].GetActions(actions);
        foreach (var action in actions)
        {
            lcd.echo($"id: {action.Id}, name: {action.Name}");
        }
    }
 public CStateMachine(CTextSurface lcd, int defaultState = 0)
 {
     m_lcd               = lcd;
     m_states            = new List <CStateMachineState>();
     m_currentStateIndex = defaultState - 1;
 }