Unsolved
This post is more than 5 years old
2 Intern
•
138 Posts
0
756
February 13th, 2009 01:00
ASL Parsing question
Hello all.
I have a problem with parsing some test that divided with \n - new lines.
This parameter i get from SNMP query on Discovery process.
Before HexToString it's look like his:
.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.0|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.1|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.2|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.3|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.4|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.5|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A2048353635414442462056455220420A0D20204D616220202056657273696F6E3A20303030330A0D20204C6F6769632056657273696F6E3A2028553229320A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553732294D50433835300A0D202041505020202056657273696F6E3A204230334430323328323030372D31302D3236290A0D202042494F53202056657273696F6E3A2028553829333039|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.7|0D0A20204D61696E20202020202020426F6172643A204835363153435542200D0A202050434220202020202056657273696F6E3A204835363153435542205645522041200D0A20204261736542494F532056657273696F6E3A20313036200D0A202045787442494F53202056657273696F6E3A20313035200D0A2020536F6674776172652056657273696F6E3A204D41353630305633303052303032200D0A20204C6F6769632020202056657273696F6E3A2028553131293130322855383829313033200D0A20204D414220202020202056657273696F6E3A2030303038200D0A2020537562426F6172645B305D3A20200D0A202050434220202020202056657273696F6E3A20483533314F324753202020564552204120204D41422056657273696F6E3A20303030310D0A2020537562426F6172645B315D3A20200D0A202050434220202020202056657273696F6E3A204835363145344746412020564552203020204D41422056657273696F6E3A2030303031|
After HexToString it's look like this
Main Board:
Pcb Version: H565ADEF2 VER A
Mab Version: 0000
Logic Version: (U3)3
Main CPU :
CPU Version: (U69)MPC850
APP Version: B03D039(2008-8-12)
BIOS Version: (U10)316
I need to parse this text and insert all Data for each elemtn (CPU, BIOS etc ) to variables.
Currently i can get only first element Pcb and after this value i have a problem.
so, my code is :
delim = " |"; // added for fs parsing in Text
xhwSlotVerOID {".1.3.6.1.4.1.2011.6.3.3.2.1.5"}
START {
RULE1
}
RULE1 {
local val;
local oid;
local Index;
oid:xhwSlotVerOID ".0." Index:word
val:word
do{ val= hexToString(val);}
PARSE_TEXT(val)
}
do {
print("Index =".Index);
//print("Value = ".val);
}
PARSE_TEXT(val) {
input = val;
local pcb;
local mab;
local logic;
.. "Main Board:" ..
"Pcb" "Version:" pcb:rep(word) // If i add to this block "\n" or "Mab" .. "Version" rule is fail
}
do {
print(pcb);
//print(mab);
}
I have a problem with parsing some test that divided with \n - new lines.
This parameter i get from SNMP query on Discovery process.
Before HexToString it's look like his:
.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.0|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.1|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.2|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.3|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.4|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A204835363541444546322056455220410A0D20204D616220202056657273696F6E3A20303030300A0D20204C6F6769632056657273696F6E3A2028553329330A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553639294D50433835300A0D202041505020202056657273696F6E3A204230334430333928323030382D382D3132290A0D202042494F53202056657273696F6E3A202855313029333136|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.5|0A0D20204D61696E20426F6172643A0A0D202050636220202056657273696F6E3A2048353635414442462056455220420A0D20204D616220202056657273696F6E3A20303030330A0D20204C6F6769632056657273696F6E3A2028553229320A0D0A0D20204D61696E20435055203A200A0D202043505520202056657273696F6E3A2028553732294D50433835300A0D202041505020202056657273696F6E3A204230334430323328323030372D31302D3236290A0D202042494F53202056657273696F6E3A2028553829333039|.1.3.6.1.4.1.2011.6.3.3.2.1.5.0.7|0D0A20204D61696E20202020202020426F6172643A204835363153435542200D0A202050434220202020202056657273696F6E3A204835363153435542205645522041200D0A20204261736542494F532056657273696F6E3A20313036200D0A202045787442494F53202056657273696F6E3A20313035200D0A2020536F6674776172652056657273696F6E3A204D41353630305633303052303032200D0A20204C6F6769632020202056657273696F6E3A2028553131293130322855383829313033200D0A20204D414220202020202056657273696F6E3A2030303038200D0A2020537562426F6172645B305D3A20200D0A202050434220202020202056657273696F6E3A20483533314F324753202020564552204120204D41422056657273696F6E3A20303030310D0A2020537562426F6172645B315D3A20200D0A202050434220202020202056657273696F6E3A204835363145344746412020564552203020204D41422056657273696F6E3A2030303031|
After HexToString it's look like this
Main Board:
Pcb Version: H565ADEF2 VER A
Mab Version: 0000
Logic Version: (U3)3
Main CPU :
CPU Version: (U69)MPC850
APP Version: B03D039(2008-8-12)
BIOS Version: (U10)316
I need to parse this text and insert all Data for each elemtn (CPU, BIOS etc ) to variables.
Currently i can get only first element Pcb and after this value i have a problem.
so, my code is :
delim = " |"; // added for fs parsing in Text
xhwSlotVerOID {".1.3.6.1.4.1.2011.6.3.3.2.1.5"}
START {
RULE1
}
RULE1 {
local val;
local oid;
local Index;
oid:xhwSlotVerOID ".0." Index:word
val:word
do{ val= hexToString(val);}
PARSE_TEXT(val)
}
do {
print("Index =".Index);
//print("Value = ".val);
}
PARSE_TEXT(val) {
input = val;
local pcb;
local mab;
local logic;
.. "Main Board:" ..
"Pcb" "Version:" pcb:rep(word) // If i add to this block "\n" or "Mab" .. "Version" rule is fail
}
do {
print(pcb);
//print(mab);
}
No Events found!
TCorcoran
53 Posts
1
February 18th, 2009 19:00
Remember that eol is basically the "newline" character in ASL.
This is what you need, I have tested it and it works.
delim = " |"; // added for fs parsing in Text
xhwSlotVerOID {".1.3.6.1.4.1.2011.6.3.3.2.1.5"}
START {
RULE1
}
RULE1 {
local val;
local oid;
local Index;
oid:xhwSlotVerOID ".0." Index:word
val:word
do{ val= hexToString(val);}
PARSE_TEXT(val)
}
do {
print("Index =".Index);
//print("Value = ".val);
}
PARSE_TEXT(val) {
input = val;
local pcb;
local mab;
local logic;
local cpu;
local app;
local bios;
"Main" ..eol
"Pcb Version:" pcb:rep(word) eol
"Mab Version:" mab:rep(word) eol
"Logic Version:" logic:rep(word) eol
..eol
"Main" ..eol
"CPU Version:" cpu:rep(word) eol
"APP Version:" app:rep(word) eol
"BIOS Version:" bios:rep(word) eol
}
do {
print(pcb);
print(mab);
print(logic);
print(cpu);
print(app);
print(bios);
}
Take care,
- TC