lib cleanup and sync for mips vu support

This commit is contained in:
2020-01-05 13:24:19 +01:00
parent ed84d0ac6e
commit 60f6a1f4be
137 changed files with 311 additions and 58 deletions

View File

@@ -41,7 +41,7 @@ static const char * FILENAME = "[ca_ci]";
const char ci_path[] = "/dev/dvb/adapter0/ci%d";
ca_slot_info_t info;
#endif
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
const char ci_path[] = "/dev/ci%d";
static int last_source = -1;
#endif
@@ -234,7 +234,7 @@ static bool transmitData(eDVBCISlot* slot, unsigned char* d, int len)
{
printf("%s -> %s len(%d)\n", FILENAME, __func__, len);
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUZERO4K
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUZERO4K
#if y_debug
for (int i = 0; i < len; i++)
printf("%02x ", d[i]);
@@ -263,7 +263,7 @@ static bool transmitData(eDVBCISlot* slot, unsigned char* d, int len)
//send some data on an fd, for a special slot and connection_id
eData sendData(eDVBCISlot* slot, unsigned char* data, int len)
{
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
unsigned char *d = (unsigned char*) malloc(len);
memcpy(d, data, len);
transmitData(slot, d, len);
@@ -878,7 +878,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf,
(*It)->SID[0] = SID;
(*It)->ci_use_count = 1;
(*It)->TP = TP;
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
if(!checkLiveSlot && mode && (*It)->source != source)
setInputSource((eDVBCISlot*)(*It), false);
#endif
@@ -889,7 +889,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf,
(*It)->newCapmt = true;
}
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
if ((*It)->newCapmt)
extractPids((eDVBCISlot*)(*It));
#endif
@@ -917,7 +917,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf,
}
else
{
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
std::list<eDVBCISlot*>::iterator it;
recordUse_found = false;
for (it = slot_data.begin(); it != slot_data.end(); ++it)
@@ -958,7 +958,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf,
return true;
}
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
void cCA::extractPids(eDVBCISlot* slot)
{
u32 prg_info_len;
@@ -1017,7 +1017,7 @@ void cCA::setSource(eDVBCISlot* slot)
case TUNER_D:
fprintf(ci, "D");
break;
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K
case TUNER_E:
fprintf(ci, "E");
break;
@@ -1054,13 +1054,39 @@ void cCA::setSource(eDVBCISlot* slot)
case TUNER_P:
fprintf(ci, "P");
break;
#if BOXMODEL_VUULTIMO4K
case TUNER_Q:
fprintf(ci, "Q");
break;
case TUNER_R:
fprintf(ci, "R");
break;
case TUNER_S:
fprintf(ci, "S");
break;
case TUNER_T:
fprintf(ci, "T");
break;
case TUNER_U:
fprintf(ci, "U");
break;
case TUNER_V:
fprintf(ci, "V");
break;
case TUNER_W:
fprintf(ci, "W");
break;
case TUNER_X:
fprintf(ci, "X");
break;
#endif
#endif
}
fclose(ci);
}
}
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
static std::string getTunerLetter(int number) { return std::string(1, char(65 + number)); }
void cCA::setInputs()
@@ -1069,10 +1095,14 @@ void cCA::setInputs()
char choices[64];
FILE * fd = 0;
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K
#if BOXMODEL_VUULTIMO4K
for (int number = 0; number < 24; number++) // tuner A to X, input 0 to 23
#else
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE
for (int number = 0; number < 16; number++) // tuner A to P, input 0 to 15
#else
for (int number = 0; number < 4; number++) // tuner A to D, input 0 to 3
#endif
#endif
{
snprintf(choices, 64, "/proc/stb/tsmux/input%d_choices", number);
@@ -1134,7 +1164,7 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci)
case TUNER_D:
fprintf(input, "D");
break;
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K
#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K
case TUNER_E:
fprintf(input, "E");
break;
@@ -1171,6 +1201,32 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci)
case TUNER_P:
fprintf(input, "P");
break;
#if BOXMODEL_VUULTIMO4K
case TUNER_Q:
fprintf(input, "Q");
break;
case TUNER_R:
fprintf(input, "R");
break;
case TUNER_S:
fprintf(input, "S");
break;
case TUNER_T:
fprintf(input, "T");
break;
case TUNER_U:
fprintf(input, "U");
break;
case TUNER_V:
fprintf(input, "V");
break;
case TUNER_W:
fprintf(input, "W");
break;
case TUNER_X:
fprintf(input, "X");
break;
#endif
#endif
}
}
@@ -1184,7 +1240,7 @@ cCA::cCA(int Slots)
printf("%s -> %s %d\n", FILENAME, __func__, Slots);
num_slots = Slots;
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
setInputs();
#endif
@@ -1280,7 +1336,7 @@ void cCA::ModuleReset(enum CA_SLOT_TYPE, uint32_t slot)
{
(*it)->status = eStatusReset;
usleep(200000);
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
last_source = (int)(*it)->source;
setInputSource((eDVBCISlot*)(*it), false);
#endif
@@ -1373,7 +1429,7 @@ void cCA::ci_inserted(eDVBCISlot* slot)
void cCA::ci_removed(eDVBCISlot* slot)
{
printf("cam (%d) status changed ->cam now _not_ present\n", slot->slot);
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
last_source = (int)slot->source;
setInputSource(slot, false);
#endif
@@ -1444,7 +1500,7 @@ void cCA::slot_pollthread(void *c)
while (1)
{
#if HAVE_ARM_HARDWARE /* Armbox */
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE /* Armbox/Mipsbox */
int len = 1024 *4;
eData status;
@@ -1685,7 +1741,7 @@ FROM_FIRST:
break;
} /* switch(slot->status) */
#endif /* end Duckbox */
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
if (!slot->init && slot->camIsReady && last_source > -1)
{
slot->source = (u8)last_source;
@@ -1740,7 +1796,7 @@ bool cCA::SendCaPMT(eDVBCISlot* slot)
printf("%s -> %s\n", FILENAME, __func__);
if (slot->fd > 0)
{
#if HAVE_ARM_HARDWARE
#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
setInputSource(slot, true);
#endif
setSource(slot);