static void read_raw_rssi_rsp(const void *data, uint8_t size) { uint8_t status = get_u8(data); uint16_t handle = get_le16(data + 1); int8_t rssi = get_s8(data + 3); print_status(status); print_handle(handle); print_rssi(rssi); }
void ReadChannelsAndSendRSSI() { uint8_t channel; int8_t rssi; for (channel=0;channel<255;channel++) { MRFI_RxIdle(); mrfiSpiWriteReg(CHANNR,channel); MRFI_RxOn(); rssi=MRFI_Rssi(); print_rssi(rssi); } }
int main(int argc, char** argv) { int fd, len, i, has_rssi; char* devname, buf[128]; unsigned long pkt_cnt; time_t tt; devname = RF12_TESTS_DEV; fd = open(RF12_TESTS_DEV, O_RDWR); if (fd < 0) { printf("\nfailed to open %s: %s.\n\n", devname, strerror(errno)); return fd; } else printf( "\nsuccessfully opened %s as fd %i, entering read loop...\n\n", devname, fd ); has_rssi = supports_rssi(fd); fflush(stdout); signal(SIGINT, sig_handler); signal(SIGTERM, sig_handler); pkt_cnt = 0; running = 1; do { len = read(fd, buf, RF12_BUF_LEN); time (&tt); if (len > 0) { printf("%s", ctime(&tt)); if (has_rssi) { print_rssi(fd); } printf("\t%i bytes read\n\t\t", len); for (i=0; i<len; i++) { printf("%d ", buf[i]); } printf("\n"); fflush(stdout); pkt_cnt++; len = write(fd, buf, len); printf("\techoed the packet with result: %d.\n", len); } else if (len < 0) { break; } } while (running); print_stats(fd); close(fd); printf("\n\n%lu packet(s) echoed.\n\n", pkt_cnt); return len; }