osc_fsk.cpp 476 B

1234567891011121314151617181920
  1. #include "osc_fsk.h"
  2. OscFSK::OscFSK(uint16_t _freq_low, uint16_t _freq_hi, uint16_t _osc_phase_max)
  3. : freq{_freq_low, _freq_hi}
  4. , osc_phase_max(_osc_phase_max) {
  5. osc_phase_current = 0;
  6. }
  7. bool OscFSK::next(bool bit, uint16_t* period) {
  8. bool advance = false;
  9. *period = freq[bit];
  10. osc_phase_current += *period;
  11. if(osc_phase_current > osc_phase_max) {
  12. advance = true;
  13. osc_phase_current -= osc_phase_max;
  14. }
  15. return advance;
  16. }