| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * Academic License - for use in teaching, academic research, and meeting
- * course requirements at degree granting institutions only. Not for
- * government, commercial, or other organizational use.
- *
- * descrambler.c
- *
- * Code generation for function 'descrambler'
- *
- */
- /* Include files */
- #include <math.h>
- #include <string.h>
- #include "descrambler.h"
- /* Function Definitions */
- void descramble(double *value, double t, const double B1[9], const double A1[9],
- const double B2[19], const double A2[19], double Z1[8], double
- Z2[18])
- {
- double b[9];
- double a[9];
- double a1;
- int k;
- double zf[8];
- double b_b[19];
- double b_a[19];
- double b_zf[18];
- /* Filter to remove 8kHz tone */
- memcpy(&b[0], &B1[0], 9U * sizeof(double));
- memcpy(&a[0], &A1[0], 9U * sizeof(double));
- a1 = A1[0];
- if ((!(A1[0] == 0.0)) && (A1[0] != 1.0)) {
- for (k = 0; k < 9; k++) {
- b[k] /= a1;
- }
- for (k = 0; k < 8; k++) {
- a[k + 1] /= a1;
- }
- a[0] = 1.0;
- }
- memset(&zf[0], 0, sizeof(double) << 3);
- a1 = Z1[0] + *value * b[0];
- for (k = 0; k < 7; k++) {
- zf[k] = Z1[k + 1];
- }
- for (k = 0; k < 8; k++) {
- Z1[k] = (zf[k] + *value * b[k + 1]) + -a1 * a[k + 1];
- }
- /* Shifting by 7kHz */
- *value = a1 * 2.0 * sin(6.2831853071795862 * t * 7000.0);
- /* Low pass filter */
- memcpy(&b_b[0], &B2[0], 19U * sizeof(double));
- memcpy(&b_a[0], &A2[0], 19U * sizeof(double));
- a1 = A2[0];
- if ((!(A2[0] == 0.0)) && (A2[0] != 1.0)) {
- for (k = 0; k < 19; k++) {
- b_b[k] /= a1;
- }
- for (k = 0; k < 18; k++) {
- b_a[k + 1] /= a1;
- }
- b_a[0] = 1.0;
- }
- memset(&b_zf[0], 0, 18U * sizeof(double));
- a1 = Z2[0] + *value * b_b[0];
- memcpy(&b_zf[0], &Z2[1], 17U * sizeof(double));
- for (k = 0; k < 18; k++) {
- Z2[k] = (b_zf[k] + *value * b_b[k + 1]) + -a1 * b_a[k + 1];
- }
- *value = a1;
- }
- /* End of code generation (descrambler.c) */
|