diff options
Diffstat (limited to 'test/test_front.c')
-rw-r--r-- | test/test_front.c | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/test/test_front.c b/test/test_front.c new file mode 100644 index 0000000..1d08fc6 --- /dev/null +++ b/test/test_front.c @@ -0,0 +1,328 @@ +/* + * test_front.c - Test program for new API + * + * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> + * & Marcus Metzler <marcus@convergence.de> + for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include <sys/ioctl.h> +#include <stdio.h> +#include <stdint.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> +#include <unistd.h> + +#include <ost/dmx.h> +#include <ost/frontend_old.h> +#include <ost/sec.h> +#include <ost/audio.h> +#include <sys/poll.h> + +int OSTSelftest(int fd) +{ + int ans; + + if ( (ans = ioctl(fd,OST_SELFTEST,0) < 0)){ + perror("OST SELF TEST: "); + return -1; + } + + return 0; +} + +int OSTSetPowerState(int fd, uint32_t state) +{ + int ans; + + if ( (ans = ioctl(fd,OST_SET_POWER_STATE,state) < 0)){ + perror("OST SET POWER STATE: "); + return -1; + } + + return 0; +} + +int OSTGetPowerState(int fd, uint32_t *state) +{ + int ans; + + if ( (ans = ioctl(fd,OST_GET_POWER_STATE,state) < 0)){ + perror("OST GET POWER STATE: "); + return -1; + } + + switch(*state){ + case OST_POWER_ON: + printf("POWER ON (%d)\n",*state); + break; + case OST_POWER_STANDBY: + printf("POWER STANDBY (%d)\n",*state); + break; + case OST_POWER_SUSPEND: + printf("POWER SUSPEND (%d)\n",*state); + break; + case OST_POWER_OFF: + printf("POWER OFF (%d)\n",*state); + break; + default: + printf("unknown (%d)\n",*state); + break; + } + + return 0; +} + +int FEReadStatus(int fd) +{ + int ans; + feStatus stat; + + if ( (ans = ioctl(fd,FE_READ_STATUS,&stat) < 0)){ + perror("FE READ STATUS: "); + return -1; + } + + if (stat & FE_HAS_POWER) + printf("FE HAS POWER\n"); + + if (stat & FE_HAS_SIGNAL) + printf("FE HAS SIGNAL\n"); + + if (stat & QPSK_SPECTRUM_INV) + printf("QPSK SPEKTRUM INV\n"); + + return 0; +} + +int FEReadBER(int fd, uint32_t *ber) +{ + int ans; + + if ( (ans = ioctl(fd,FE_READ_BER, ber) < 0)){ + perror("FE READ_BER: "); + return -1; + } + printf("BER: %d\n",*ber); + + return 0; +} + +int FEReadSignalStrength(int fd, int32_t *strength) +{ + int ans; + + if ( (ans = ioctl(fd,FE_READ_SIGNAL_STRENGTH, strength) < 0)){ + perror("FE READ SIGNAL STRENGTH: "); + return -1; + } + printf("SIGNAL STRENGTH: %d\n",*strength); + + return 0; +} + +int FEReadSNR(int fd, int32_t *snr) +{ + int ans; + + if ( (ans = ioctl(fd,FE_READ_SNR, snr) < 0)){ + perror("FE READ_SNR: "); + return -1; + } + printf("SNR: %d\n",*snr); + + return 0; +} + + +int FEReadUncorrectedBlocks(int fd, uint32_t *ucb) +{ + int ans; + + if ( (ans = ioctl(fd,FE_READ_UNCORRECTED_BLOCKS, ucb) < 0)){ + perror("FE READ UNCORRECTED BLOCKS: "); + return -1; + } + printf("UBLOCKS: %d\n",*ucb); + + return 0; +} + +int FEGetNextFrequency(int fd, uint32_t *nfr) +{ + int ans; + + if ( (ans = ioctl(fd,FE_GET_NEXT_FREQUENCY, nfr) < 0)){ + perror("FE GET NEXT FREQUENCY: "); + return -1; + } + printf("Next Frequency: %d\n",*nfr); + + return 0; +} + +int FEGetNextSymbolRate(int fd, uint32_t *nsr) +{ + int ans; + + if ( (ans = ioctl(fd,FE_GET_NEXT_SYMBOL_RATE, nsr) < 0)){ + perror("FE GET NEXT SYMBOL RATE: "); + return -1; + } + printf("Next Symbol Rate: %d\n",*nsr); + + return 0; +} + +int QPSKTune(int fd, struct qpskParameters *param) +{ + int ans; + + if ( (ans = ioctl(fd,QPSK_TUNE, param) < 0)){ + perror("QPSK TUNE: "); + return -1; + } + + return 0; +} + +int QPSKGetEvent (int fd, struct qpskEvent *event) +{ + int ans; + + if ( (ans = ioctl(fd,QPSK_GET_EVENT, event) < 0)){ + perror("QPSK GET EVENT: "); + return -1; + } + + return 0; +} + +int QPSKFEInfo (int fd, struct qpskFrontendInfo *info) +{ + int ans; + + if ( (ans = ioctl(fd,QPSK_FE_INFO, info) < 0)){ + perror("QPSK FE INFO: "); + return -1; + } + + printf("min Frequency : %d\n", info->minFrequency); + printf("max Frequency : %d\n", info->maxFrequency); + printf("min Symbol Rate : %d\n", info->minSymbolRate); + printf("max Symbol Rate : %d\n", info->maxSymbolRate); + printf("Hardware Type : %d\n", info->hwType); + printf("Hardware Version: %d\n", info->hwVersion); + + return 0; +} + +int SecGetStatus (int fd, struct secStatus *state) +{ + int ans; + + if ( (ans = ioctl(fd,SEC_GET_STATUS, state) < 0)){ + perror("QPSK GET EVENT: "); + return -1; + } + + switch (state->busMode){ + case SEC_BUS_IDLE: + printf("SEC BUS MODE: IDLE (%d)\n",state->busMode); + break; + case SEC_BUS_BUSY: + printf("SEC BUS MODE: BUSY (%d)\n",state->busMode); + break; + case SEC_BUS_OFF: + printf("SEC BUS MODE: OFF (%d)\n",state->busMode); + break; + case SEC_BUS_OVERLOAD: + printf("SEC BUS MODE: OVERLOAD (%d)\n",state->busMode); + break; + default: + printf("SEC BUS MODE: unknown (%d)\n",state->busMode); + break; + } + + + switch (state->selVolt){ + case SEC_VOLTAGE_OFF: + printf("SEC VOLTAGE: OFF (%d)\n",state->selVolt); + break; + case SEC_VOLTAGE_LT: + printf("SEC VOLTAGE: LT (%d)\n",state->selVolt); + break; + case SEC_VOLTAGE_13: + printf("SEC VOLTAGE: 13 (%d)\n",state->selVolt); + break; + case SEC_VOLTAGE_13_5: + printf("SEC VOLTAGE: 13.5 (%d)\n",state->selVolt); + break; + case SEC_VOLTAGE_18: + printf("SEC VOLTAGE: 18 (%d)\n",state->selVolt); + break; + case SEC_VOLTAGE_18_5: + printf("SEC VOLTAGE: 18.5 (%d)\n",state->selVolt); + break; + default: + printf("SEC VOLTAGE: unknown (%d)\n",state->selVolt); + break; + } + + printf("SEC CONT TONE: %s\n", (state->contTone ? "ON" : "OFF")); + return 0; +} + + +main(int argc, char **argv) +{ + int fd,fd_sec; + uint32_t state; + int32_t strength; + struct qpskFrontendInfo info; + struct secStatus sec_state; + + if((fd = open("/dev/ost/qpskfe",O_RDWR)) < 0){ + perror("FRONTEND DEVICE: "); + return -1; + } + if((fd_sec = open("/dev/ost/sec",O_RDWR)) < 0){ + perror("SEC DEVICE: "); + return -1; + } + + OSTSelftest(fd); + OSTSetPowerState(fd, OST_POWER_ON); + OSTGetPowerState(fd, &state); + FEReadStatus(fd); + FEReadBER(fd, &state); + FEReadSignalStrength(fd, &strength); + FEReadSNR(fd, &state); + FEReadUncorrectedBlocks(fd, &state); + state = 12567000; + FEGetNextFrequency(fd, &state); + FEGetNextSymbolRate(fd, &state); + QPSKFEInfo (fd, &info); + SecGetStatus (fd_sec, &sec_state); + + close(fd); + close(fd_sec); +} + |