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); } } }
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); }
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); }
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); } }