Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

braled.c

Example of BRA usage - control of LED on BRUM.
/*
 * Copyright (C) 2006 BLADOX, s.r.o.  All rights reserved.
 * 
 * This file is part of an example program for Turbo. This example
 * program may be used, distributed and modified without limitation.
 *
 */

#include <config.h>
#include <turbo/turbo.h>

#include <stdlib.h>

u8 PROGMEM t_bra_tag[] = "led";
u8 PROGMEM t_No_Link[] = "No Link";
u8 PROGMEM t_OK[] = "OK";

/* *INDENT-OFF* */

lc_char PROGMEM lc_Led[]={
        LC_EN("Led")
        LC_END
};

lc_char PROGMEM lc_On[]={
        LC_EN("On")
        LC_END
};

lc_char PROGMEM lc_Off[]={
        LC_EN("Off")
        LC_END
};


/* *INDENT-ON* */

u8 led_on (SCtx * ctx, u8 action)
{
  if (action == APP_ENTER)
  {
    u8 *r = buf_A ();
    u8 l;

    r = bra_make_head (r, NULL, t_bra_tag, 1);

    *r++ = 0x01;                //ON

    l = bra_txrx (buf_A (), r - buf_A (), t_bra_tag, 30, 1, 10);
    if (l > 0)
      r = display_text_raw (t_OK, Q_DISPLAY_TEXT_USER_CLEAR);
    else
      display_text_raw (t_No_Link, Q_DISPLAY_TEXT_USER_CLEAR);

    return APP_BACK;
  }
  return APP_OK;
}

u8 led_off (SCtx * ctx, u8 action)
{
  if (action == APP_ENTER)
  {
    u8 *r = buf_A ();
    u8 l;

    r = bra_make_head (r, NULL, t_bra_tag, 1);

    *r++ = 0x00;                //OFF

    l = bra_txrx (buf_A (), r - buf_A (), t_bra_tag, 30, 1, 10);
    if (l > 0)
      r = display_text_raw (t_OK, Q_DISPLAY_TEXT_USER_CLEAR);
    else
      display_text_raw (t_No_Link, Q_DISPLAY_TEXT_USER_CLEAR);

    return APP_BACK;
  }
  return APP_OK;
}

SNodeP led_n = { lc_Led, NULL };
SNodeP led_on_n = { lc_On, led_on };
SNodeP led_off_n = { lc_Off, led_off };

/* *INDENT-OFF* */
SEdgeP led_edges_p[] = {
  {&led_n, &led_on_n},
  {&led_n, &led_off_n},
  NULL
};
/* *INDENT-ON* */

void action_menu (void *data)
{
  SCtx *c;

  c = spider_init ();
  c->n = &led_n;
  c->eP = &led_edges_p;

  spider (c);
}

void turbo_handler (u8 action, void *data)
{
  switch (action)
  {
    case ACTION_INSERT_MENU:
      insert_menu (locale (lc_Led));
      break;
    case ACTION_MENU_SELECTION:
      stk_thread (action_menu, data);
      break;
    default:
      break;
  }
}


Copyright © 2004-2006 BLADOX
Turbo version 1.2