Esempio n. 1
0
        private string GenerateApiDriver(FunctionData data, uint devAddr)
        {
            StringBuilder sb = new StringBuilder("// This is an automatically generated file.\n");

            sb.Append("// Do not change unless you know exactly what you are doing.\n");

            sb.AppendFormat(
                "// Device Driver for API Call: {0} on Address {1}\n\n",
                data.GetFinalName(),
                devAddr.ToHexString()
                );

            sb.AppendFormat("public internal {1} {0}(", data.GetFinalName(), HLBaseTypeNames.s_UintTypeName);

            for (int i = 0; i < data.ParameterCount; i++)
            {
                if (i != 0)
                {
                    sb.AppendFormat(", {1} arg{0}", i, HLBaseTypeNames.s_UintTypeName);
                }
                else
                {
                    sb.AppendFormat("{1} arg{0}", i, HLBaseTypeNames.s_UintTypeName);
                }
            }

            sb.Append(")\n{\n");

            sb.AppendFormat("\t{1} addr = {0};\n", devAddr, HLBaseTypeNames.s_UintTypeName);
            sb.Append("\treturn addr(");

            for (int i = 0; i < data.ParameterCount; i++)
            {
                if (i != 0)
                {
                    sb.AppendFormat(", arg{0}", i);
                }
                else
                {
                    sb.AppendFormat("arg{0}", i);
                }
            }

            sb.Append(");\n}");

            return(sb.ToString());
        }
Esempio n. 2
0
        public void AddApi(uint addr, FunctionData funcData)
        {
            m_ExposedApis.Add(addr, funcData);

            string driverDir = Path.Combine(
                DeviceDriverDirectory,
                funcData.GetFinalName() + ".vhl"
                );

            File.WriteAllText(driverDir, GenerateApiDriver(funcData, addr));
        }