| 734 | } |
| 735 | |
| 736 | static signalVector *modulateBurstBasic(const BitVector &bits, |
| 737 | int guard_len, int sps) |
| 738 | { |
| 739 | int burst_len; |
| 740 | signalVector *pulse, burst, *shaped; |
| 741 | signalVector::iterator burst_itr; |
| 742 | |
| 743 | if (sps == 1) |
| 744 | pulse = GSMPulse1->c0; |
| 745 | else |
| 746 | pulse = GSMPulse->c0; |
| 747 | |
| 748 | burst_len = sps * (bits.size() + guard_len); |
| 749 | |
| 750 | burst = signalVector(burst_len); |
| 751 | burst.isRealOnly(true); |
| 752 | burst_itr = burst.begin(); |
| 753 | |
| 754 | /* Raw bits are not differentially encoded */ |
| 755 | for (unsigned i = 0; i < bits.size(); i++) { |
| 756 | *burst_itr = 2.0 * (bits[i] & 0x01) - 1.0; |
| 757 | burst_itr += sps; |
| 758 | } |
| 759 | |
| 760 | GMSKRotate(burst, sps); |
| 761 | burst.isRealOnly(false); |
| 762 | |
| 763 | /* Single Gaussian pulse approximation shaping */ |
| 764 | shaped = convolve(&burst, pulse, NULL, START_ONLY); |
| 765 | |
| 766 | return shaped; |
| 767 | } |
| 768 | |
| 769 | /* Assume input bits are not differentially encoded */ |
| 770 | signalVector *modulateBurst(const BitVector &wBurst, int guardPeriodLength, |
no test coverage detected