serial InputS(void) { InputStart(); InitWaitAnswer(); while (1) { if (fKey == true) { mpSerial[ibPort] = SER_BADLINK; break; } ResetWatchdog(); ShowWaitAnswer(1); if (GetWaitAnswer()) { mpSerial[ibPort] = SER_BADLINK; break; } if (mpSerial[ibPort] == SER_INPUT_MASTER) DecompressS(); if (mpSerial[ibPort] == SER_POSTINPUT_MASTER) { if (ChecksumS() == 0) { InputGoodCheck(); mpSerial[ibPort] = SER_GOODCHECK; } else mpSerial[ibPort] = SER_BADCHECK; break; } else if ((mpSerial[ibPort] == SER_OVERFLOW) || (mpSerial[ibPort] == SER_BADLINK)) break; } return mpSerial[ibPort]; }
serial Input31(void) { InputStart(); InitWaitAnswer(); while (1) { if (fKey == true) { mpSerial[ibPort] = SER_BADLINK; break; } ResetWatchdog(); ShowWaitAnswer(1); if (GetWaitAnswer()) { mpSerial[ibPort] = SER_BADLINK; break; } if (mpSerial[ibPort] == SER_INPUT_MASTER) { if ((InBuff(0) == 0x7E) && (IndexInBuff() > 3) && (IndexInBuff() == InBuff(1)+4)) mpSerial[ibPort] = SER_BADLINK; } if (mpSerial[ibPort] == SER_POSTINPUT_MASTER) { uchar bCrc = MakeCrc8Bit31InBuff(1, CountInBuff()-1); if (bCrc == 0) { Unpack31(); InputGoodCheck(); mpSerial[ibPort] = SER_GOODCHECK; } else mpSerial[ibPort] = SER_BADCHECK; break; } else if (mpSerial[ibPort] == SER_BADLINK) { uchar bCrc = MakeCrc8Bit31InBuff(1, IndexInBuff()-1); if (bCrc == 0) { Unpack31(); InputGoodCheck(); mpSerial[ibPort] = SER_GOODCHECK; } else mpSerial[ibPort] = SER_BADCHECK; break; } else if (mpSerial[ibPort] == SER_OVERFLOW) break; } MonitorIn(); return mpSerial[ibPort]; }
static int playFile(const char * file) { int status = -1; media_desc_t mdesc; //DBGLOG("playing file: [%s]", file); memset(&mdesc, 0, sizeof(media_desc_t)); mdesc.ftype = NMS_WP_INVALID; if (!InputIsOurFile(file)) return -1; status = InputInit(file, &mdesc); switch (status) { case 0: //everything is fine break; case 1: WPRINT("InputInit: DM320 is locked by something else. Please try again later."); LOCK_PLAYMUTEX(); errorStatus = NMS_STATUS_OUTPUT_LOCKED; UNLOCK_PLAYMUTEX(); goto bail_clean_input; default: WPRINT("InputInit: Unable to init device!"); LOCK_PLAYMUTEX(); errorStatus = NMS_STATUS_NOT_PLAYABLE; UNLOCK_PLAYMUTEX(); goto bail_clean_input; } LOCK_PLAYMUTEX(); InputGetInfo(file, &info); UNLOCK_PLAYMUTEX(); if (InputStart(file)) { status = -1; goto bail_clean_input; } status = OutputInit(&mdesc,OutputGetMode(),curProportions); switch (status) { case 0: //everything is fine break; case 1: WPRINT("OutputInit: DM320 is locked by something else. Please try again later."); LOCK_PLAYMUTEX(); errorStatus = NMS_STATUS_OUTPUT_LOCKED; UNLOCK_PLAYMUTEX(); goto bail_clean_input; default: WPRINT("OutputInit: Unable to init output !"); LOCK_PLAYMUTEX(); if ((playtype == NPT_FILE) || (totalFiles <= 1) || (repeat == 1)) errorStatus = NMS_STATUS_NOT_PLAYABLE; UNLOCK_PLAYMUTEX(); goto bail_clean_input; } OutputActivateMode(0); LOCK_PLAYMUTEX(); playtime = 0; ffrwLevel = 0; sfrwLevel = 0; sfrwLevelFinal = 0; muted = 0; playing = 1; trackChange = TC_DISABLE; UNLOCK_PLAYMUTEX(); if (newThread(&avThread, NULL, avLoop, NULL)) { status = -1; goto bail_clean_input; } return 0; bail_clean_input: LOCK_PLAYMUTEX(); InputFinish(); UNLOCK_PLAYMUTEX(); return status; }