/** * Parses a line from client. (Overloading from superclass) */ void ClientKramerVSHDMIMatrix::_parseline() { _bufferReadIndex=0; bool value; if (isNextPartOfBuffer_P(PSTR("~01@ OK"))) { _initialize(); } else if (isNextPartOfBuffer_P(PSTR("~01@SIGNAL "))) { uint8_t inputIndex = parseInt(); _bufferReadIndex++; isNextPartOfBuffer_P(PSTR(" ")); // This will automatically increment _bufferReadIndex is there is a space - exactly what we need... :-) value = parseInt(); if (inputIndex>0 && inputIndex <= ClientKramerVSHDMIMatrix_NUMINPUTS) { _signalState[inputIndex-1] = value; if (_serialOutput>1) Serial.print(F("_signalState[")); if (_serialOutput>1) Serial.print(inputIndex); if (_serialOutput>1) Serial.print(F("]=")); if (_serialOutput>1) Serial.println(_signalState[inputIndex-1]); } } else if (isNextPartOfBuffer_P(PSTR("~01@VID "))) { _hasInitialized = true; uint8_t inputIndex = parseInt(); _bufferReadIndex++; uint8_t outputIndex = parseInt(); if (outputIndex>0 && outputIndex <= ClientKramerVSHDMIMatrix_NUMOUTPUTS) { _outputRouting[outputIndex-1] = inputIndex; if (_serialOutput>1) Serial.print(F("_outputRouting[")); if (_serialOutput>1) Serial.print(outputIndex); if (_serialOutput>1) Serial.print(F("]=")); if (_serialOutput>1) Serial.println(_outputRouting[outputIndex-1]); } } }
/** * Parses a line from client. (Overloading from superclass) */ void ClientBMDVideohubTCP::_parseline() { uint8_t inputNum; uint8_t outputNum; /* Additional sections in the protocol not (yet) supported: MONITORING OUTPUT LABELS: VIDEO MONITORING OUTPUT ROUTING: MONITORING OUTPUT LOCKS: SERIAL PORT LABELS: SERIAL PORT ROUTING: SERIAL PORT LOCKS: SERIAL PORT DIRECTIONS: PROCESSING UNIT ROUTING: PROCESSING UNIT LOCKS: FRAME LABELS: FRAME BUFFER ROUTING: FRAME BUFFER LOCKS: */ if (!strcmp(_buffer, "")) { _section = 0; } else if (!strcmp_P(_buffer, PSTR("PROTOCOL PREAMBLE:"))) { // strcmp_P("RAM STRING", PSTR("FLASH STRING")); if (_serialOutput) { Serial.print(F("Connection to Videohub ")); Serial.print(_IP); Serial.println(F(" confirmed, pulling status")); } _section = 1; _hasInitialized = true; _lastStatusRequest = millis(); } else if (!strcmp_P(_buffer, PSTR("VIDEOHUB DEVICE:"))) { _section = 2; } else if (!strcmp_P(_buffer, PSTR("INPUT LABELS:"))) { _section = 3; } else if (!strcmp_P(_buffer, PSTR("OUTPUT LABELS:"))) { _section = 4; } else if (!strcmp_P(_buffer, PSTR("VIDEO OUTPUT LOCKS:"))) { _section = 5; } else if (!strcmp_P(_buffer, PSTR("VIDEO OUTPUT ROUTING:"))) { _section = 6; } else { _bufferReadIndex = 0; switch (_section) { case 2: // VIDEOHUB DEVICE if (isNextPartOfBuffer_P(PSTR("Device present: "))) { _devicePresent = isNextPartOfBuffer_P(PSTR("true")); if (_serialOutput > 1) Serial.print(F("_devicePresent=")); if (_serialOutput > 1) Serial.println(_devicePresent); } if (isNextPartOfBuffer_P(PSTR("Video inputs: "))) { _numInputs = parseInt(); if (_serialOutput > 1) Serial.print(F("_numInputs=")); if (_serialOutput > 1) Serial.println(_numInputs); } if (isNextPartOfBuffer_P(PSTR("Video processing units: "))) { _numProcUnits = parseInt(); if (_serialOutput > 1) Serial.print(F("_numProcUnits=")); if (_serialOutput > 1) Serial.println(_numProcUnits); } if (isNextPartOfBuffer_P(PSTR("Video outputs: "))) { _numOutputs = parseInt(); if (_serialOutput > 1) Serial.print(F("_numOutputs=")); if (_serialOutput > 1) Serial.println(_numOutputs); } if (isNextPartOfBuffer_P(PSTR("Video monitoring outputs: "))) { _numMonOutputs = parseInt(); if (_serialOutput > 1) Serial.print(F("_numMonOutputs=")); if (_serialOutput > 1) Serial.println(_numMonOutputs); } if (isNextPartOfBuffer_P(PSTR("Serial ports: "))) { _serialPorts = parseInt(); if (_serialOutput > 1) Serial.print(F("_serialPorts=")); if (_serialOutput > 1) Serial.println(_serialPorts); } break; case 3: // INPUT LABELS inputNum = parseInt(); if (inputNum < ClientBMDVideohubTCP_NUMINPUTS) { _bufferReadIndex++; uint8_t idx = 0; memset(_inputLabels[inputNum], 0, ClientBMDVideohubTCP_LABELLEN); while (idx < ClientBMDVideohubTCP_LABELLEN - 1 && _bufferReadIndex < _bufferWriteIndex) { _inputLabels[inputNum][idx++] = _buffer[_bufferReadIndex]; _bufferReadIndex++; } if (_serialOutput > 1) Serial.print(F("_inputLabels ")); if (_serialOutput > 1) Serial.print(inputNum); if (_serialOutput > 1) Serial.print(F("=")); if (_serialOutput > 1) Serial.println(_inputLabels[inputNum]); } break; case 4: // OUTPUT LABELS outputNum = parseInt(); if (outputNum < ClientBMDVideohubTCP_NUMOUTPUTS) { _bufferReadIndex++; uint8_t idx = 0; memset(_outputLabels[outputNum], 0, ClientBMDVideohubTCP_LABELLEN); while (idx < ClientBMDVideohubTCP_LABELLEN - 1 && _bufferReadIndex < _bufferWriteIndex) { _outputLabels[outputNum][idx++] = _buffer[_bufferReadIndex]; _bufferReadIndex++; } if (_serialOutput > 1) Serial.print(F("_outputLabels ")); if (_serialOutput > 1) Serial.print(outputNum); if (_serialOutput > 1) Serial.print(F("=")); if (_serialOutput > 1) Serial.println(_outputLabels[outputNum]); } break; case 5: // VIDEO OUTPUT LOCKS outputNum = parseInt(); if (outputNum < ClientBMDVideohubTCP_NUMOUTPUTS) { _outputLocks[outputNum] = _buffer[_bufferReadIndex + 1]; if (_serialOutput > 1) Serial.print(F("_outputLock ")); if (_serialOutput > 1) Serial.print(outputNum); if (_serialOutput > 1) Serial.print(F("=")); if (_serialOutput > 1) Serial.println(_outputLocks[outputNum]); } break; case 6: // VIDEO OUTPUT ROUTING outputNum = parseInt(); if (outputNum < ClientBMDVideohubTCP_NUMOUTPUTS) { _bufferReadIndex++; _outputRouting[outputNum] = parseInt(); if (_serialOutput > 1) Serial.print(F("_outputRouting ")); if (_serialOutput > 1) Serial.print(outputNum); if (_serialOutput > 1) Serial.print(F("=")); if (_serialOutput > 1) Serial.println(_outputRouting[outputNum]); } break; } } }
/** * Parses a line from client. (Overloading from superclass) */ void ClientBMDSmartView::_parseline() { if (!strcmp(_buffer,"")) { _section = 0; } else if (!strcmp_P(_buffer,PSTR("PROTOCOL PREAMBLE:"))) { //strcmp_P("RAM STRING", PSTR("FLASH STRING")); _section = 1; _hasInitialized = true; if (_serialOutput) Serial.println(F("Connection confirmed, getting status")); } else if (!strcmp_P(_buffer,PSTR("SMARTVIEW DEVICE:"))) { _section = 2; } else if (!strcmp_P(_buffer,PSTR("NETWORK:"))) { _section = 3; } else if (!strcmp_P(_buffer,PSTR("MONITOR A:"))) { _section = 4; } else if (!strcmp_P(_buffer,PSTR("MONITOR B:"))) { _section = 5; } else { _bufferReadIndex = 0; switch(_section) { case 4: // Monitor A or B: case 5: if (isNextPartOfBuffer_P(PSTR("Brightness: "))) { _Smart_brightness[_section-4] = parseInt(); if (_serialOutput>1) { Serial.print(F("Brightness, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_brightness[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("Contrast: "))) { _Smart_contrast[_section-4] = parseInt(); if (_serialOutput>1) { Serial.print(F("Contrast, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_contrast[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("Saturation: "))) { _Smart_saturation[_section-4] = parseInt(); if (_serialOutput>1) { Serial.print(F("Saturation, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_saturation[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("Identify: "))) { if (isNextPartOfBuffer_P(PSTR("true"))) { _Smart_identify[_section-4] = true; } else { _Smart_identify[_section-4] = false; } if (_serialOutput>1) { Serial.print(F("Identify, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_identify[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("Border: "))) { if (isNextPartOfBuffer_P(PSTR("None"))) { _Smart_border[_section-4] = 0; } else if (isNextPartOfBuffer_P(PSTR("Red"))) { _Smart_border[_section-4] = 1; } else if (isNextPartOfBuffer_P(PSTR("Green"))) { _Smart_border[_section-4] = 2; } else if (isNextPartOfBuffer_P(PSTR("Blue"))) { _Smart_border[_section-4] = 3; /* } else if (isNextPartOfBuffer_P(PSTR("White"))) { // Doesn't work yet? _Smart_border[_section-4] = 4; */ } else { _Smart_border[_section-4] = 255; } if (_serialOutput>1) { Serial.print(F("Identify, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_border[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("WidescreenSD: "))) { if (isNextPartOfBuffer_P(PSTR("auto"))) { _Smart_widescreenSD[_section-4] = 0; } else if (isNextPartOfBuffer_P(PSTR("on"))) { _Smart_widescreenSD[_section-4] = 1; } else if (isNextPartOfBuffer_P(PSTR("off"))) { _Smart_widescreenSD[_section-4] = 2; } else { _Smart_widescreenSD[_section-4] = 255; } if (_serialOutput>1) { Serial.print(F("WidescreenSD, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_widescreenSD[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("ScopeMode: "))) { if (isNextPartOfBuffer_P(PSTR("Picture"))) { _Smart_scopeMode[_section-4] = 0; } else if (isNextPartOfBuffer_P(PSTR("AudioDbfs"))) { _Smart_scopeMode[_section-4] = 1; } else if (isNextPartOfBuffer_P(PSTR("AudioDbvu"))) { _Smart_scopeMode[_section-4] = 2; } else if (isNextPartOfBuffer_P(PSTR("Histogram"))) { _Smart_scopeMode[_section-4] = 3; } else if (isNextPartOfBuffer_P(PSTR("ParadeRGB"))) { _Smart_scopeMode[_section-4] = 4; } else if (isNextPartOfBuffer_P(PSTR("ParadeYUV"))) { _Smart_scopeMode[_section-4] = 5; } else if (isNextPartOfBuffer_P(PSTR("Vector100"))) { _Smart_scopeMode[_section-4] = 6; } else if (isNextPartOfBuffer_P(PSTR("Vector75"))) { _Smart_scopeMode[_section-4] = 7; } else if (isNextPartOfBuffer_P(PSTR("WaveformLuma"))) { _Smart_scopeMode[_section-4] = 8; } else { _Smart_scopeMode[_section-4] = 255; } if (_serialOutput>1) { Serial.print(F("ScopeMode, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_scopeMode[_section-4]); } } if (isNextPartOfBuffer_P(PSTR("AudioChannel: "))) { _Smart_audioChannel[_section-4] = parseInt(); if (_serialOutput>1) { Serial.print(F("AudioChannel, Mon ")); Serial.print(_section-4); Serial.print(F(": ")); Serial.println(_Smart_audioChannel[_section-4]); } } break; } } }