1850 | | |
1851 | | |
1852 | | |
1853 | | |
1854 | | /*TiXmlElement *pMission; |
1855 | | TiXmlElement *pService; |
1856 | | TiXmlElement *pChild0, *pChild1, *pChild2, *pChild3; |
1857 | | TiXmlHandle hRoot(0); |
1858 | | //printf("ServiceManagementLayer:: Loading Configuration.\n"); |
1859 | | TiXmlDocument doc("."); |
1860 | | doc.LoadFile(SML_Config); |
1861 | | bool loadOkay = doc.LoadFile(); |
1862 | | if(!loadOkay) |
1863 | | printf("Loading SML configuration failed: %s\n", SML_Config); |
1864 | | |
1865 | | TiXmlHandle hDoc(&doc); |
1866 | | |
1867 | | pMission = hDoc.FirstChildElement().Element(); |
1868 | | |
1869 | | if(!pMission) |
1870 | | printf("No valid root!"); |
1871 | | |
1872 | | hRoot = TiXmlHandle(pMission); |
1873 | | pService = pMission->FirstChildElement(); |
1874 | | int32_t mission_num = 0; |
1875 | | //Iterate through the missions |
1876 | | for(pChild0 = pMission->FirstChildElement(); pChild0 ; \ |
1877 | | pChild0 = pChild0->NextSiblingElement()) |
1878 | | { |
1879 | | int32_t service_num = 0; |
1880 | | uint16_t cond_array[] = {0, 0}; |
1881 | | //printf("mission_num = %d\n", mission_num); |
1882 | | memset(cond_array, 0, 2); |
1883 | | |
1884 | | for(pChild1 = pChild0->FirstChildElement(); pChild1; \ |
1885 | | pChild1 = pChild1->NextSiblingElement()) |
1886 | | { |
1887 | | int32_t conditional_0 = service_num; |
1888 | | for(pChild2 = pChild1->FirstChildElement(); \ |
1889 | | pChild2; pChild2 = pChild2->NextSiblingElement()) |
1890 | | { |
1891 | | service_num++; |
1892 | | int32_t conditional_1 = service_num; |
1893 | | for(pChild3 = pChild2->FirstChildElement(); \ |
1894 | | pChild3; pChild3 = pChild3 ->NextSiblingElement()) |
1895 | | { |
1896 | | service_num++; |
1897 | | mList[mission_num].services[service_num].name = pChild3->Attribute("name"); |
1898 | | if(pChild3->Attribute("input1")) |
1899 | | mList[mission_num].services[service_num].input[0] = pChild3->Attribute("input1"); |
1900 | | if(pChild3->Attribute("input2")) |
1901 | | mList[mission_num].services[service_num].input[1] = pChild3->Attribute("input2"); |
1902 | | if(pChild3->Attribute("input3")) |
1903 | | mList[mission_num].services[service_num].input[2] = pChild3->Attribute("input3"); |
1904 | | if(pChild3->Attribute("output1")) |
1905 | | mList[mission_num].services[service_num].output[0] = pChild3->Attribute("output1"); |
1906 | | if(pChild3->Attribute("output2")) |
1907 | | mList[mission_num].services[service_num].output[1] = pChild3->Attribute("output2"); |
1908 | | if(pChild3->Attribute("output3")) |
1909 | | mList[mission_num].services[service_num].output[2] = pChild3->Attribute("output3"); |
1910 | | cond_array[1]++; |
1911 | | } |
1912 | | |
1913 | | if(conditional_1 != service_num){ |
1914 | | mList[mission_num].services[conditional_1].name = pChild2->Value(); |
1915 | | if(pChild2->Attribute("input_t")) |
1916 | | mList[mission_num].services[conditional_1].input[0] = pChild2->Attribute("input_t"); |
1917 | | if(pChild2->Attribute("input_f")) |
1918 | | mList[mission_num].services[conditional_1].input[1] = pChild2->Attribute("input_f"); |
1919 | | } |
1920 | | else{ |
1921 | | mList[mission_num].services[service_num].name = pChild2->Attribute("name"); |
1922 | | if(pChild2->Attribute("input1")) |
1923 | | mList[mission_num].services[service_num].input[0] = pChild2->Attribute("input1"); |
1924 | | if(pChild2->Attribute("input2")) |
1925 | | mList[mission_num].services[service_num].input[1] = pChild2->Attribute("input2"); |
1926 | | if(pChild2->Attribute("input3")) |
1927 | | mList[mission_num].services[service_num].input[2] = pChild2->Attribute("input3"); |
1928 | | if(pChild2->Attribute("output1")) |
1929 | | mList[mission_num].services[service_num].output[0] = pChild2->Attribute("output1"); |
1930 | | if(pChild2->Attribute("output2")) |
1931 | | mList[mission_num].services[service_num].output[1] = pChild2->Attribute("output2"); |
1932 | | if(pChild2->Attribute("output3")) |
1933 | | mList[mission_num].services[service_num].output[2] = pChild2->Attribute("output3"); |
1934 | | } |
1935 | | |
1936 | | mList[mission_num].services[conditional_1].num_conds = cond_array[1]; |
1937 | | cond_array[1] = 0; |
1938 | | cond_array[0]++; |
1939 | | } |
1940 | | if(conditional_0 != service_num){ |
1941 | | mList[mission_num].services[conditional_0].name = pChild1->Value(); |
1942 | | if(pChild1->Attribute("input_t")) |
1943 | | mList[mission_num].services[conditional_0].input[0] = pChild1->Attribute("input_t"); |
1944 | | if(pChild1->Attribute("input_f")) |
1945 | | mList[mission_num].services[conditional_0].input[1] = pChild1->Attribute("input_f"); |
1946 | | printf("if detected %s, %s\n", pChild1->Attribute("input_f"), pChild1->Attribute("input_t")); |
1947 | | } |
1948 | | else{ |
1949 | | mList[mission_num].services[service_num].name = pChild1->Attribute("name"); |
1950 | | if(pChild1->Attribute("input1")) |
1951 | | mList[mission_num].services[service_num].input[0] = pChild1->Attribute("input1"); |
1952 | | if(pChild1->Attribute("input2")) |
1953 | | mList[mission_num].services[service_num].input[1] = pChild1->Attribute("input2"); |
1954 | | if(pChild1->Attribute("input3")) |
1955 | | mList[mission_num].services[service_num].input[2] = pChild1->Attribute("input3"); |
1956 | | if(pChild1->Attribute("output1")) |
1957 | | mList[mission_num].services[service_num].output[0] = pChild1->Attribute("output1"); |
1958 | | if(pChild1->Attribute("output2")) |
1959 | | mList[mission_num].services[service_num].output[1] = pChild1->Attribute("output2"); |
1960 | | if(pChild1->Attribute("output3")) |
1961 | | mList[mission_num].services[service_num].output[2] = pChild1->Attribute("output3"); |
1962 | | } |
1963 | | |
1964 | | mList[mission_num].services[conditional_0].num_conds = cond_array[0]; |
1965 | | //printf("hello\n"); |
1966 | | |
1967 | | cond_array[0] = 0; |
1968 | | service_num++; |
1969 | | } |
1970 | | for(int i = 0; i < service_num; i++) |
1971 | | printf("input1=%s, output1=%s\n", mList[mission_num].services[i].input[0].c_str(), mList[mission_num].services[service_num].output[0].c_str()); |
1972 | | |
1973 | | mList[mission_num].numServices = service_num; |
1974 | | mList[mission_num].name = pChild0->Attribute("name"); |
1975 | | mList[mission_num].missionID = atoi(pChild0->Attribute("id")); |
1976 | | if(pChild0->Attribute("input1")) |
1977 | | mList[mission_num].input[0] = pChild0->Attribute("input1"); |
1978 | | if(pChild0->Attribute("input2")) |
1979 | | mList[mission_num].input[1] = pChild0->Attribute("input2"); |
1980 | | if(pChild0->Attribute("input3")) |
1981 | | mList[mission_num].input[2] = pChild0->Attribute("input3"); |
1982 | | if(pChild0->Attribute("output1")) |
1983 | | mList[mission_num].output[0] = pChild0->Attribute("output1"); |
1984 | | if(pChild0->Attribute("output2")) |
1985 | | mList[mission_num].output[1] = pChild0->Attribute("output2"); |
1986 | | if(pChild0->Attribute("output3")) |
1987 | | mList[mission_num].output[2] = pChild0->Attribute("output3"); |
1988 | | printf("input1=%s, outpu1=%s\n", mList[mission_num].input[0].c_str(), mList[mission_num].output[0].c_str()); |
1989 | | mission_num++; |
1990 | | }*/ |