void printCommand(Command c){ int i; printf("command: %s\ncommandc: %d\ncommandv:\n", c.command, c.commandc); for(i=0; i<c.commandc; i++){ printf(" "); printArgument(c.commandv[i]); } }
/** * @private * @return true if it's ok, false if there is an error */ bool printMethodOrNotificationMetaData(OutputStream* outputStream, DeviceInterface* deviceInterface, unsigned char commandHeader, char argumentLength, char resultLength, bool notification) { bool result = true; if (argumentLength != DEVICE_HEADER_NOT_HANDLED) { DeviceMethodMetaData* deviceMethodMetaData = getDeviceMethodMetaData(); // Function Header appendCharTableData(outputStream, commandHeader, DEVICE_USAGE_HEADER_COLUMN_LENGTH); // functionName const char* functionName = deviceMethodMetaData->functionName; appendStringTableData(outputStream, functionName, DEVICE_USAGE_NAME_COLUMN_LENGTH); // arguments appendStringTableData(outputStream, "IN", DEVICE_USAGE_IO_COLUMN_LENGTH); int argumentCount = deviceMethodMetaData->argumentsSize; int argumentIndex; int realArgumentLength = 0; for (argumentIndex = 0; argumentIndex < argumentCount; argumentIndex++) { DeviceArgument deviceArgument = deviceMethodMetaData->arguments[argumentIndex]; realArgumentLength += getLengthOfType(deviceArgument.type); } appendDecTableData(outputStream, realArgumentLength, DEVICE_USAGE_IO_SIZE_COLUMN_LENGTH); // param name empty appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_NAME_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_SIZE_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_TYPE_COLUMN_LENGTH); appendTableSeparator(outputStream); println(outputStream); for (argumentIndex = 0; argumentIndex < argumentCount; argumentIndex++) { DeviceArgument deviceArgument = deviceMethodMetaData->arguments[argumentIndex]; printArgument(outputStream, &deviceArgument, argumentIndex); } // TODO : Error must be check at the beginning of the function and not Inside if (argumentLength != realArgumentLength) { writeError(DEVICE_INTERFACE_PROBLEM); result = false; appendStringLN(outputStream, "Arguments Definition ERROR !!!!!!"); println(outputStream); appendStringAndDec(outputStream, "argumentCount=", argumentCount); println(outputStream); appendStringAndDec(outputStream, "argumentLength=", argumentLength); println(outputStream); appendStringAndDec(outputStream, "realArgumentLength=", realArgumentLength); println(outputStream); } // results if (!notification) { appendStringTableData(outputStream, "", DEVICE_USAGE_HEADER_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_NAME_COLUMN_LENGTH); appendStringTableData(outputStream, "OUT", DEVICE_USAGE_IO_COLUMN_LENGTH); int resultCount = deviceMethodMetaData->resultsSize; int realResultLength = 0; int resultIndex; for (resultIndex = 0; resultIndex < resultCount; resultIndex++) { DeviceArgument resultArgument = deviceMethodMetaData->results[resultIndex]; realResultLength += getLengthOfType(resultArgument.type); } appendDecTableData(outputStream, realResultLength, DEVICE_USAGE_IO_SIZE_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_NAME_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_SIZE_COLUMN_LENGTH); appendStringTableData(outputStream, "", DEVICE_USAGE_PARAM_TYPE_COLUMN_LENGTH); appendTableSeparator(outputStream); println(outputStream); for (resultIndex = 0; resultIndex < resultCount; resultIndex++) { DeviceArgument resultArgument = deviceMethodMetaData->results[resultIndex]; printArgument(outputStream, &resultArgument, resultIndex); } if (resultLength != realResultLength) { result = false; writeError(DEVICE_INTERFACE_PROBLEM); appendString(outputStream, "Result Parameters Definition ERROR !!!!!!"); appendCRLF(outputStream); appendStringAndDec(outputStream, "resultCount=", resultCount); appendCRLF(outputStream); appendStringAndDec(outputStream, "resultLength=", resultLength); appendCRLF(outputStream); appendStringAndDec(outputStream, "realResultLength=", realResultLength); appendCRLF(outputStream); } } appendTableHeaderSeparatorLine(outputStream); } return result; }
/** * @private * @return true if it's ok, false if there is an error */ bool printMethodOrNotificationMetaData(OutputStream* outputStream, DeviceInterface* deviceInterface, char commandHeader, char argumentLength, char resultLength, bool notification) { bool result = true; if (argumentLength != DEVICE_HEADER_NOT_HANDLED) { DeviceMethodMetaData* deviceMethodMetaData = getDeviceMethodMetaData(); char deviceHeader = deviceInterface->deviceHeader; // DeviceName const char* deviceName = deviceInterface->deviceGetName(); appendString(outputStream, deviceName); append(outputStream, DEVICE_NAME_AND_HEADER_SEPARATOR); // Header append(outputStream, deviceHeader); append(outputStream, commandHeader); append(outputStream, DEVICE_HEADER_AND_TYPE_SEPARATOR); // functionName appendString(outputStream, deviceMethodMetaData->functionName); append(outputStream, ARGUMENTS_START_CHAR); // arguments int argumentCount = deviceMethodMetaData->argumentsSize; int argumentIndex; int realArgumentLength = 0; for (argumentIndex = 0; argumentIndex < argumentCount; argumentIndex++) { DeviceArgument deviceArgument = deviceMethodMetaData->arguments[argumentIndex]; realArgumentLength += printArgument(outputStream, &deviceArgument, argumentIndex); } append(outputStream, ARGUMENTS_STOP_CHAR); if (argumentLength != realArgumentLength) { writeError(DEVICE_INTERFACE_PROBLEM); result = false; appendString(outputStream, "Arguments Definition ERROR !!!!!!\n"); appendCRLF(outputStream); appendStringAndDec(outputStream, "argumentCount=", argumentCount); appendCRLF(outputStream); appendStringAndDec(outputStream, "argumentLength=", argumentLength); appendCRLF(outputStream); appendStringAndDec(outputStream, "realArgumentLength=", realArgumentLength); appendCRLF(outputStream); } // results if (!notification) { appendString(outputStream, ARGUMENTS_AND_RESULTS_SEPARATOR); append(outputStream, ARGUMENTS_START_CHAR); int resultCount = deviceMethodMetaData->resultsSize; int realResultLength = 0; int resultIndex; for (resultIndex = 0; resultIndex < resultCount; resultIndex++) { DeviceArgument resultArgument = deviceMethodMetaData->results[resultIndex]; realResultLength += printArgument(outputStream, &resultArgument, resultIndex); } if (resultLength != realResultLength) { result = false; writeError(DEVICE_INTERFACE_PROBLEM); appendString(outputStream, "Result Parameters Definition ERROR !!!!!!"); appendCRLF(outputStream); appendStringAndDec(outputStream, "resultCount=", resultCount); appendCRLF(outputStream); appendStringAndDec(outputStream, "resultLength=", resultLength); appendCRLF(outputStream); appendStringAndDec(outputStream, "realResultLength=", realResultLength); appendCRLF(outputStream); } if (resultCount == 0) { appendString(outputStream, "void"); } } append(outputStream, ARGUMENTS_STOP_CHAR); appendString(outputStream, ":"); appendDec(outputStream, argumentLength); appendString(outputStream, "=>"); appendDec(outputStream, resultLength); println(outputStream); } return result; }