Esempio n. 1
0
void ax25_display_frame(Stream* out, FBUF *b)
{
    fbuf_reset(b);
    addr_t to, from;
    addr_t digis[7];
    uint8_t ctrl;
    uint8_t pid;
    uint8_t ndigis = ax25_decode_header(b, &from, &to, digis, &ctrl, &pid);
    ax25_display_addr(out, &from); 
    putstr_P(out, PSTR(">"));
    ax25_display_addr(out, &to);
    uint8_t i;
    for (i=0; i<ndigis; i++) {
       putstr_P(out, PSTR(","));
       ax25_display_addr(out, &digis[i]);
       if (digis[i].flags & FLAG_DIGI)
           putstr_P(out, PSTR("*"));
    }
    if (ctrl == FTYPE_UI)
    {
       putstr_P(out, PSTR(":"));    
       for (i=0; i < fbuf_length(b) - AX25_HDR_LEN(ndigis); i++) {
          register char c = fbuf_getChar(b); 
          if (c!='\n' && c!='\r' && c>=(char) 28)
              putch(out, c);
       }
    }

}
Esempio n. 2
0
void CButton::coreDraw()
{
    const SDimensions dim(getDimensions());
    const uint8_t right = dim.x + dim.w - 1;
    const uint8_t bottom = dim.y + dim.h - 1;

    for (uint8_t x=dim.x+1; x<right; ++x)
    {
        GD.wr(atxy(x, dim.y),
              (highlight) ? CHAR_BUTTON_HORIZ_TOP_HL : CHAR_BUTTON_HORIZ_TOP);
        GD.wr(atxy(x, bottom),
              (highlight) ? CHAR_BUTTON_HORIZ_BOTTOM_HL : CHAR_BUTTON_HORIZ_BOTTOM);
    }

    for (uint8_t y=dim.y+1; y<bottom; ++y)
    {
        GD.wr(atxy(dim.x, y),
              (highlight) ? CHAR_BUTTON_VERT_LEFT_HL : CHAR_BUTTON_VERT_LEFT);
        GD.wr(atxy(right, y),
              (highlight) ? CHAR_BUTTON_VERT_RIGHT_HL : CHAR_BUTTON_VERT_RIGHT);
    }

    if (flashText)
        putstr_P(dim.x + 2, dim.y + 1, text);
    else
        putstr(dim.x + 2, dim.y + 1, text);
}
Esempio n. 3
0
void CLabel::coreDraw()
{
    uint8_t x;

    switch (alignment)
    {
    case ALIGN_LEFT: x = getDimensions().x; break;
    case ALIGN_CENTER: x = center(getDimensions().x, strlen(text), getDimensions().w); break;
    case ALIGN_RIGHT: x = getDimensions().x + (getDimensions().w - strlen(text)); break;
    }

    if (flashText)
        putstr_P(x, getDimensions().y, text);
    else
        putstr(x, getDimensions().y, text);
}
Esempio n. 4
0
static void mon_thread()
{
    while (mon_on)
    {
        /* Wait for frame and then to AFSK decoder/encoder 
         * is not running. 
         */
        FBUF frame = fbq_get(&mon);
        if (!fbuf_empty(&frame)) {
           /* Display it */
           ax25_display_frame(out, &frame);
           putstr_P(out, PSTR("\r\n"));
        }
        /* And dispose the frame. Note that also an empty frame should be disposed! */
        fbuf_release(&frame);    
    }
}