summaryrefslogtreecommitdiff
path: root/gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h
diff options
context:
space:
mode:
Diffstat (limited to 'gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h')
-rw-r--r--gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h b/gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h
index c367681..ce9b5d4 100644
--- a/gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h
+++ b/gsm-receiver/src/lib/decoder/openbtsstuff/GSML1FEC.h
@@ -58,6 +58,10 @@ namespace GSM
*/
+ enum TCHMode {
+ MODE_SPEECH_FR,
+ MODE_SPEECH_EFR,
+ };
/** L1 decoder used for full rate TCH and FACCH -- mostly from GSM 05.03 3.1 and 4.2 */
@@ -75,8 +79,10 @@ namespace GSM
SoftVector mClass2_c; ///< the class 2 part of c[]
ViterbiR2O4 mVCoder;
- VocoderFrame mVFrame; ///< unpacking buffer for vocoder frame
+ VocoderFrame mVFrame; ///< buffer for FR vocoder frame
+ VocoderAMRFrame mVFrameAMR; ///< buffer for EFR vocoder frame packed in AMR container
unsigned char mPrevGoodFrame[33]; ///< previous good frame.
+ unsigned int mPrevGoodFrameLength;
Parity mTCHParity;
const TDMAMapping& mMapping; ///< multiplexing description
@@ -85,6 +91,7 @@ namespace GSM
static const unsigned mMaxQSize = 3;
+ enum TCHMode mMode;
public:
@@ -94,6 +101,14 @@ namespace GSM
return FACCHType;
}
+ enum TCHMode mode() const {
+ return mMode;
+ }
+
+ void setMode(enum TCHMode mode) {
+ mMode = mode;
+ }
+
/** TCH/FACCH has a special-case writeLowSide. */
void writeLowSide(const RxBurst& inBurst);
@@ -118,6 +133,9 @@ namespace GSM
unsigned char * get_voice_frame(){
return mPrevGoodFrame;
}
+ unsigned int get_voice_frame_length(){
+ return mPrevGoodFrameLength;
+ }
/**
Receive a traffic frame.
Non-blocking. Returns NULL if queue is dry.
personal git repositories of Harald Welte. Your mileage may vary