aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/DabMux.cpp24
-rw-r--r--src/DabMux.cpp.patch58
-rw-r--r--src/Log.h9
-rw-r--r--src/MuxElements.h3
-rw-r--r--src/ParserConfigfile.cpp2
-rw-r--r--src/RemoteControl.cpp2
-rw-r--r--src/RemoteControl.h14
-rw-r--r--src/dabInput.h4
-rw-r--r--src/dabInputDabplusFifo.cpp2
-rw-r--r--src/dabInputDabplusFile.cpp4
-rw-r--r--src/dabInputRawFifo.cpp4
-rw-r--r--src/dabInputZmq.cpp4
-rw-r--r--src/dabInputZmq.h6
-rw-r--r--src/dabOutput/dabOutput.h4
14 files changed, 103 insertions, 37 deletions
diff --git a/src/DabMux.cpp b/src/DabMux.cpp
index 5baad39..275175b 100644
--- a/src/DabMux.cpp
+++ b/src/DabMux.cpp
@@ -273,14 +273,14 @@ int main(int argc, char *argv[])
vector<DabComponent*>::iterator component = ensemble->components.end();
vector<DabComponent*>::iterator componentProgFIG0_8;
vector<DabComponent*>::iterator componentFIG0_13;
- bool transmitFIG0_13programme; // Alternate between programme and data
+ bool transmitFIG0_13programme = false; // Alternate between programme and data
vector<DabComponent*>::iterator componentDataFIG0_8;
vector<dabSubchannel*>::iterator subchannel = ensemble->subchannels.end();
vector<dabSubchannel*>::iterator subchannelFIG0_1;
vector<dabOutput*>::iterator output;
dabProtection* protection = NULL;
- BaseRemoteController* rc;
+ BaseRemoteController* rc = NULL;
unsigned int currentFrame;
int returnCode = 0;
@@ -291,7 +291,7 @@ int main(int argc, char *argv[])
//FIC Length, DAB Mode I, II, IV -> FICL = 24, DAB Mode III -> FICL = 32
unsigned FICL = (ensemble->mode == 3 ? 32 : 24);
- unsigned long sync = 0x49C5F8;
+ uint32_t sync = 0x49C5F8;
unsigned short FLtmp = 0;
unsigned short nbBytesCRC = 0;
unsigned short CRCtmp = 0xFFFF;
@@ -1333,8 +1333,8 @@ int main(int argc, char *argv[])
if (figSize > 30 - 5) {
break;
}
- *((uint16_t*)&etiFrame[index]) =
- htons((*componentProgFIG0_8)->serviceId);
+ etiFrame[index] = ((*componentProgFIG0_8)->serviceId >> 8) & 0xFF;
+ etiFrame[index+1] = ((*componentProgFIG0_8)->serviceId) & 0xFF;
fig0->Length += 2;
index += 2;
figSize += 2;
@@ -1353,8 +1353,8 @@ int main(int argc, char *argv[])
if (figSize > 30 - 4) {
break;
}
- *((uint16_t*)&etiFrame[index]) =
- htons((*componentProgFIG0_8)->serviceId);
+ etiFrame[index] = ((*componentProgFIG0_8)->serviceId >> 8) & 0xFF;
+ etiFrame[index+1] = ((*componentProgFIG0_8)->serviceId) & 0xFF;
fig0->Length += 2;
index += 2;
figSize += 2;
@@ -1414,8 +1414,8 @@ int main(int argc, char *argv[])
if (figSize > 30 - 7) {
break;
}
- *((uint32_t*)&etiFrame[index]) =
- htonl((*componentDataFIG0_8)->serviceId);
+ etiFrame[index] = ((*componentDataFIG0_8)->serviceId >> 8) & 0xFF;
+ etiFrame[index+1] = ((*componentDataFIG0_8)->serviceId) & 0xFF;
fig0->Length += 4;
index += 4;
figSize += 4;
@@ -1434,8 +1434,8 @@ int main(int argc, char *argv[])
if (figSize > 30 - 6) {
break;
}
- *((uint32_t*)&etiFrame[index]) =
- htonl((*componentDataFIG0_8)->serviceId);
+ etiFrame[index] = ((*componentDataFIG0_8)->serviceId >> 8) & 0xFF;
+ etiFrame[index+1] = ((*componentDataFIG0_8)->serviceId) & 0xFF;
fig0->Length += 4;
index += 4;
figSize += 4;
@@ -1626,7 +1626,7 @@ int main(int argc, char *argv[])
fig0_9->Extension = 9;
fig0_9->ext = 0;
- fig0_9->lto = 0;
+ fig0_9->lto = 0; // Unique LTO for ensemble
fig0_9->ensembleLto = ensemble->lto;
fig0_9->ensembleEcc = ensemble->ecc;
fig0_9->tableId = ensemble->international_table;
diff --git a/src/DabMux.cpp.patch b/src/DabMux.cpp.patch
new file mode 100644
index 0000000..a6057c9
--- /dev/null
+++ b/src/DabMux.cpp.patch
@@ -0,0 +1,58 @@
++++ DabMux.cpp 2014-02-27 17:56:41.108646157 +0100
+--- DabMux.cpp.orig 2014-02-27 17:56:01.080447673 +0100
+@@ -616,8 +616,6 @@
+ typeHigh = type >> 3;
+ typeLow = type & 0x1f;
+ }
++ //CSP - SERGIO
++ uint32_t xpad;
+ } PACKED;
+
+
+@@ -2060,14 +2058,12 @@
+ returnCode = -1;
+ goto EXIT;
+ }
++ /* CSP - SERGIO
+ if (!(*component)->isPacketComponent(ensemble->subchannels)) {
+ etiLog.printHeader(TcpLog::ERR, "application type\n");
+ printUsage(progName);
+ returnCode = -1;
+ goto EXIT;
+ }
++ */
+ (*component)->packet.appType = strtoul(optarg, NULL, 0);
+ break;
+ case 'g':
+@@ -3210,7 +3206,7 @@
+ goto EXIT;
+ }
+
++ // CSP - SERGIO if ((*subchannel)->type != 3) continue;
+- if ((*subchannel)->type != 3) continue;
+
+ if ((*component)->packet.appType != 0xffff) {
+ if (fig0 == NULL) {
+@@ -3236,18 +3232,10 @@
+
+ FIG0_13_app* app = (FIG0_13_app*)&etiFrame[index];
+ app->setType((*component)->packet.appType);
++ // CSP - SERGIO app->length = 0;
++ app->length = 4;
++ app->xpad = 0x0cbc0000;
++
++
++ //index += 2;
++ //figSize += 2;
++ //fig0->Length += 2;
++
++ index += 6;
++ figSize += 6;
++ fig0->Length += 6;
+- app->length = 0;
+- index += 2;
+- figSize += 2;
+- fig0->Length += 2;
+
+ if (figSize > 30) {
+ etiLog.printHeader(TcpLog::ERR,
diff --git a/src/Log.h b/src/Log.h
index c766e6e..85a2f75 100644
--- a/src/Log.h
+++ b/src/Log.h
@@ -45,12 +45,13 @@
enum log_level_t {debug = 0, info, warn, error, alert, emerg};
-const std::string levels_as_str[] =
+static const std::string levels_as_str[] =
{ " ", " ", "WARN ", "ERROR", "ALERT", "EMERG"} ;
/** Abstract class all backends must inherit from */
class LogBackend {
public:
+ virtual ~LogBackend() {}
virtual void log(log_level_t level, std::string message) = 0;
virtual std::string get_name() = 0;
};
@@ -82,7 +83,7 @@ class LogToSyslog : public LogBackend {
syslog(syslog_level, SYSLOG_IDENT " %s", message.c_str());
}
- std::string get_name() { return name; };
+ std::string get_name() { return name; }
private:
std::string name;
@@ -117,7 +118,7 @@ class LogToFile : public LogBackend {
fflush(log_file);
}
- std::string get_name() { return name; };
+ std::string get_name() { return name; }
private:
std::string name;
@@ -128,7 +129,7 @@ class LogLine;
class Logger {
public:
- Logger() {};
+ Logger() {}
void register_backend(LogBackend* backend);
diff --git a/src/MuxElements.h b/src/MuxElements.h
index aa4f602..3bcc903 100644
--- a/src/MuxElements.h
+++ b/src/MuxElements.h
@@ -202,6 +202,7 @@ class DabComponent : public RemoteControllable
/* Getting a parameter always returns a string. */
virtual const string get_parameter(const string& parameter) const;
+ virtual ~DabComponent() {}
private:
const DabComponent& operator=(const DabComponent& other);
@@ -236,6 +237,8 @@ class DabService : public RemoteControllable
/* Getting a parameter always returns a string. */
virtual const string get_parameter(const string& parameter) const;
+ virtual ~DabService() {}
+
private:
const DabService& operator=(const DabService& other);
DabService(const DabService& other);
diff --git a/src/ParserConfigfile.cpp b/src/ParserConfigfile.cpp
index 4a67186..d699ed0 100644
--- a/src/ParserConfigfile.cpp
+++ b/src/ParserConfigfile.cpp
@@ -483,7 +483,7 @@ void parse_configfile(string configuration_file,
string outputuid = it->first;
string uri = pt_outputs.get<string>(outputuid);
- int proto_pos = uri.find("://");
+ size_t proto_pos = uri.find("://");
if (proto_pos == std::string::npos) {
stringstream ss;
ss << "Output with uid " << outputuid << " no protocol defined!";
diff --git a/src/RemoteControl.cpp b/src/RemoteControl.cpp
index 3ce3310..62527bd 100644
--- a/src/RemoteControl.cpp
+++ b/src/RemoteControl.cpp
@@ -205,7 +205,7 @@ void RemoteControllerTelnet::dispatch_command(tcp::socket& socket, string comman
if (cmd.size() >= 4) {
try {
stringstream new_param_value;
- for (int i = 3; i < cmd.size(); i++) {
+ for (size_t i = 3; i < cmd.size(); i++) {
new_param_value << cmd[i];
if (i+1 < cmd.size()) {
diff --git a/src/RemoteControl.h b/src/RemoteControl.h
index fd8d025..a9da7d7 100644
--- a/src/RemoteControl.h
+++ b/src/RemoteControl.h
@@ -58,7 +58,7 @@ class ParameterError : public std::exception
{
public:
ParameterError(string message) : m_message(message) {}
- ~ParameterError() throw() {};
+ ~ParameterError() throw() {}
const char* what() const throw() { return m_message.c_str(); }
private:
@@ -84,6 +84,8 @@ class BaseRemoteController {
* restarted.
*/
virtual void restart() = 0;
+
+ virtual ~BaseRemoteController() {}
};
/* Objects that support remote control must implement the following class */
@@ -92,6 +94,8 @@ class RemoteControllable {
RemoteControllable(string name) : m_name(name) {}
+ virtual ~RemoteControllable() {}
+
/* return a short name used to identify the controllable.
* It might be used in the commands the user has to type, so keep
* it short
@@ -159,7 +163,7 @@ class RemoteControllerTelnet : public BaseRemoteController {
m_cohort.push_back(controllable);
}
- virtual bool fault_detected() { return m_fault; };
+ virtual bool fault_detected() { return m_fault; }
virtual void restart();
@@ -255,11 +259,11 @@ class RemoteControllerTelnet : public BaseRemoteController {
*/
class RemoteControllerDummy : public BaseRemoteController {
public:
- void enrol(RemoteControllable* controllable) {};
+ void enrol(RemoteControllable*) {}
- bool fault_detected() { return false; };
+ bool fault_detected() { return false; }
- virtual void restart() {};
+ virtual void restart() {}
};
#endif
diff --git a/src/dabInput.h b/src/dabInput.h
index e6cea8c..fb64459 100644
--- a/src/dabInput.h
+++ b/src/dabInput.h
@@ -54,9 +54,9 @@ class DabInputBase {
virtual int setBitrate(int bitrate) = 0;
virtual int close() = 0;
- virtual ~DabInputBase() {};
+ virtual ~DabInputBase() {}
protected:
- DabInputBase() {};
+ DabInputBase() {}
};
/* Wrapper class for old-style dabInputOperations inputs */
diff --git a/src/dabInputDabplusFifo.cpp b/src/dabInputDabplusFifo.cpp
index d1369c5..81f373b 100644
--- a/src/dabInputDabplusFifo.cpp
+++ b/src/dabInputDabplusFifo.cpp
@@ -99,7 +99,7 @@ int dabInputDabplusFifoRead(void* args, void* buffer, int size)
{
dabInputDabplusFifoData* data = (dabInputDabplusFifoData*)args;
- if (data->bufferSize != size * 5) {
+ if (data->bufferSize != (size_t)size * 5) {
if (data->buffer != NULL) {
delete[] data->buffer;
}
diff --git a/src/dabInputDabplusFile.cpp b/src/dabInputDabplusFile.cpp
index bd968ef..c435aba 100644
--- a/src/dabInputDabplusFile.cpp
+++ b/src/dabInputDabplusFile.cpp
@@ -79,7 +79,7 @@ int dabInputDabplusFileOpen(void* args, const char* filename)
int dabInputDabplusFileRead(void* args, void* buffer, int size)
{
dabInputDabplusFileData* data = (dabInputDabplusFileData*)args;
- if (data->bufferSize != size * 5) {
+ if (data->bufferSize != (size_t)size * 5) {
if (data->buffer == NULL) {
delete[] data->buffer;
}
@@ -90,7 +90,7 @@ int dabInputDabplusFileRead(void* args, void* buffer, int size)
if (data->bufferIndex + size > data->bufferSize) {
int ret = read(data->file, data->buffer, data->bufferSize);
- if (ret != data->bufferSize) {
+ if (ret != (int)data->bufferSize) {
if (ret != 0) {
etiLog.log(alert, "ERROR: Incomplete DAB+ frame!\n");
}
diff --git a/src/dabInputRawFifo.cpp b/src/dabInputRawFifo.cpp
index 3a77be3..0da9727 100644
--- a/src/dabInputRawFifo.cpp
+++ b/src/dabInputRawFifo.cpp
@@ -96,7 +96,7 @@ int dabInputRawFifoSetbuf(void* args, int size)
return size;
}
- if (data->bufferSize != size) {
+ if (data->bufferSize != (size_t)size) {
if (data->buffer != NULL) {
delete[] data->buffer;
}
@@ -130,7 +130,7 @@ int dabInputRawFifoReadFrame(dabInputOperations* ops, void* args,
return -1;
}
- if (result + data->bufferOffset < size) {
+ if (result + data->bufferOffset < (size_t)size) {
data->bufferOffset += result;
etiLog.log(info, "reach end of fifo -> rewinding\n");
diff --git a/src/dabInputZmq.cpp b/src/dabInputZmq.cpp
index 95446d1..ffe1e6b 100644
--- a/src/dabInputZmq.cpp
+++ b/src/dabInputZmq.cpp
@@ -196,7 +196,7 @@ int DabInputZmqBase::readFrame(void* buffer, int size)
/******** MPEG input *******/
// Read a MPEG frame from the socket, and push to list
-int DabInputZmqMPEG::readFromSocket(int framesize)
+int DabInputZmqMPEG::readFromSocket(size_t framesize)
{
bool messageReceived;
zmq::message_t msg;
@@ -249,7 +249,7 @@ int DabInputZmqMPEG::readFromSocket(int framesize)
// Read a AAC+ superframe from the socket, cut it into five frames,
// and push to list
-int DabInputZmqAAC::readFromSocket(int framesize)
+int DabInputZmqAAC::readFromSocket(size_t framesize)
{
bool messageReceived;
zmq::message_t msg;
diff --git a/src/dabInputZmq.h b/src/dabInputZmq.h
index 5c88316..9f7fba2 100644
--- a/src/dabInputZmq.h
+++ b/src/dabInputZmq.h
@@ -97,7 +97,7 @@ class DabInputZmqBase : public DabInputBase, public RemoteControllable {
virtual const string get_parameter(const string& parameter) const;
protected:
- virtual int readFromSocket(int framesize) = 0;
+ virtual int readFromSocket(size_t framesize) = 0;
zmq::context_t m_zmq_context;
zmq::socket_t m_zmq_sock; // handle for the zmq socket
@@ -122,7 +122,7 @@ class DabInputZmqMPEG : public DabInputZmqBase {
}
private:
- virtual int readFromSocket(int framesize);
+ virtual int readFromSocket(size_t framesize);
};
class DabInputZmqAAC : public DabInputZmqBase {
@@ -136,7 +136,7 @@ class DabInputZmqAAC : public DabInputZmqBase {
}
private:
- virtual int readFromSocket(int framesize);
+ virtual int readFromSocket(size_t framesize);
};
#endif // HAVE_INPUT_ZMQ
diff --git a/src/dabOutput/dabOutput.h b/src/dabOutput/dabOutput.h
index 1050de1..72a15d4 100644
--- a/src/dabOutput/dabOutput.h
+++ b/src/dabOutput/dabOutput.h
@@ -65,7 +65,7 @@ class DabOutput
virtual int Write(void* buffer, int size) = 0;
virtual int Close() = 0;
- virtual ~DabOutput() {};
+ virtual ~DabOutput() {}
};
// ----- used in File and Fifo outputs
@@ -277,7 +277,7 @@ struct zmq_dab_message_t
version = 1;
}
uint32_t version;
- uint16_t buflen[NUM_FRAMES_PER_ZMQ_MESSAGE];
+ int16_t buflen[NUM_FRAMES_PER_ZMQ_MESSAGE];
uint8_t buf[NUM_FRAMES_PER_ZMQ_MESSAGE*6144];
};