summaryrefslogtreecommitdiffstats
path: root/dmidecode.c
diff options
context:
space:
mode:
authorvwhitteron <vwhitteron@abc39116-655e-4be6-ad55-d661dc543056>2008-08-06 06:57:13 +0000
committervwhitteron <vwhitteron@abc39116-655e-4be6-ad55-d661dc543056>2008-08-06 06:57:13 +0000
commitf3c71346a009f1b88a3acc29a66fa6a9c01b124d (patch)
tree8596c1c944f5989a0e20492e6471a1263596b39e /dmidecode.c
parent0b91f0fc928b320e12e43e7ba004cbd61d4cfacc (diff)
downloadpython-dmidecode-f3c71346a009f1b88a3acc29a66fa6a9c01b124d.tar.gz
python-dmidecode-f3c71346a009f1b88a3acc29a66fa6a9c01b124d.tar.xz
python-dmidecode-f3c71346a009f1b88a3acc29a66fa6a9c01b124d.zip
Completed `Case 22'
git-svn-id: svn://svn.autonomy.net.au/python-dmidecode@43 abc39116-655e-4be6-ad55-d661dc543056
Diffstat (limited to 'dmidecode.c')
-rw-r--r--dmidecode.c102
1 files changed, 78 insertions, 24 deletions
diff --git a/dmidecode.c b/dmidecode.c
index c415c5f..5e2db78 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -3640,37 +3640,91 @@ void dmi_decode(struct dmi_header *h, u16 ver, PyObject* pydata) {
break;
case 21: /* 3.3.22 Built-in Pointing Device */
- dmiAppendObject(++minor, "Built-in Pointing Device", NULL);
+ NEW_METHOD = 1;
+ caseData = PyDict_New();
+
if(h->length<0x07) break;
- dmiAppendObject(++minor, "Type", "%s", dmi_pointing_device_type(data[0x04]));
- dmiAppendObject(++minor, "Interface", "%s", dmi_pointing_device_interface(data[0x05]));
- dmiAppendObject(++minor, "Buttons", "%u", data[0x06]);
+ _val = dmi_pointing_device_type(data[0x04]);
+ PyDict_SetItemString(caseData, "Type", _val);
+ Py_DECREF(_val);
+
+ _val = dmi_pointing_device_interface(data[0x05]);
+ PyDict_SetItemString(caseData, "Interface", _val);
+ Py_DECREF(_val);
+
+ _val = PyString_FromFormat("%u", data[0x06]);
+ PyDict_SetItemString(caseData, "Buttons", _val);
+ Py_DECREF(_val);
break;
case 22: /* 3.3.23 Portable Battery */
- dmiAppendObject(++minor, "Portable Battery", NULL);
+ NEW_METHOD = 1;
+ caseData = PyDict_New();
+
if(h->length<0x10) break;
- dmiAppendObject(++minor, "Location", "%s", dmi_string(h, data[0x04]));
- dmiAppendObject(++minor, "Manufacturer", "%s", dmi_string(h, data[0x05]));
- if(data[0x06] || h->length<0x1A)
- dmiAppendObject(++minor, "Manufacture Date", "%s", dmi_string(h, data[0x06]));
- if(data[0x07] || h->length<0x1A)
- dmiAppendObject(++minor, "Serial Number", "%s", dmi_string(h, data[0x07]));
- dmiAppendObject(++minor, "Name", "%s", dmi_string(h, data[0x08]));
- if(data[0x09]!=0x02 || h->length<0x1A)
+ _val = dmi_string_py(h, data[0x04]);
+ PyDict_SetItemString(caseData, "Location", _val);
+ Py_DECREF(_val);
+
+ _val = dmi_string_py(h, data[0x05]);
+ PyDict_SetItemString(caseData, "Manufacturer", _val);
+ Py_DECREF(_val);
+
+ if(data[0x06] || h->length<0x1A) {
+ _val = dmi_string_py(h, data[0x06]);
+ PyDict_SetItemString(caseData, "Manufacture Date", _val);
+ Py_DECREF(_val);
+ }
+
+ if(data[0x07] || h->length<0x1A) {
+ _val = dmi_string_py(h, data[0x07]);
+ PyDict_SetItemString(caseData, "Serial Number", _val);
+ Py_DECREF(_val);
+ }
+
+ _val = dmi_string_py(h, data[0x08]);
+ PyDict_SetItemString(caseData, "Name", _val);
+ Py_DECREF(_val);
+
+ if(data[0x09]!=0x02 || h->length<0x1A) {
dmiAppendObject(++minor, "Chemistry", "%s", dmi_battery_chemistry(data[0x09]));
- dmiAppendObject(++minor, "Design Capacity", (h->length<0x1A)?dmi_battery_capacity(WORD(data+0x0A), 1, _):dmi_battery_capacity(WORD(data+0x0A), data[0x15], _));
- dmiAppendObject(++minor, "Design Voltage", dmi_battery_voltage(WORD(data+0x0C), _));
- dmiAppendObject(++minor, "SBDS Version", "%s", dmi_string(h, data[0x0E]));
- dmiAppendObject(++minor, "Maximum Error", dmi_battery_maximum_error(data[0x0F], _));
+ }
+ _val = (h->length<0x1A)?dmi_battery_capacity(WORD(data+0x0A), 1):dmi_battery_capacity(WORD(data+0x0A), data[0x15]);
+ PyDict_SetItemString(caseData, "Design Capacity", _val);
+ Py_DECREF(_val);
+
+ _val = dmi_battery_voltage(WORD(data+0x0C));
+ PyDict_SetItemString(caseData, "Design Voltage", _val);
+ Py_DECREF(_val);
+
+ _val = dmi_string_py(h, data[0x0E]);
+ PyDict_SetItemString(caseData, "SBDS Version", _val);
+ Py_DECREF(_val);
+
+ _val = dmi_battery_maximum_error(data[0x0F]);
+ PyDict_SetItemString(caseData, "Maximum Error", _val);
+ Py_DECREF(_val);
+
if(h->length<0x1A) break;
- if(data[0x07]==0)
- dmiAppendObject(++minor, "SBDS Serial Number", "%04X", WORD(data+0x10));
- if(data[0x06]==0)
- dmiAppendObject(++minor, "SBDS Manufacture Date", "%u-%02u-%02u", 1980+(WORD(data+0x12)>>9), (WORD(data+0x12)>>5)&0x0F, WORD(data+0x12)&0x1F);
- if(data[0x09]==0x02)
- dmiAppendObject(++minor, "SBDS Chemistry", "%s", dmi_string(h, data[0x14]));
- dmiAppendObject(++minor, "OEM-specific Information", "0x%08X", DWORD(data+0x16));
+ if(data[0x07]==0) {
+ _val = PyString_FromFormat("%04X", WORD(data+0x10));
+ PyDict_SetItemString(caseData, "SBDS Serial Number", _val);
+ Py_DECREF(_val);
+ }
+ if(data[0x06]==0) {
+ _val = PyString_FromFormat("%u-%02u-%02u", 1980+(WORD(data+0x12)>>9), (WORD(data+0x12)>>5)&0x0F, WORD(data+0x12)&0x1F);
+ PyDict_SetItemString(caseData, "SBDS Manufacture Date", _val);
+ Py_DECREF(_val);
+ }
+ if(data[0x09]==0x02) {
+ _val = dmi_string_py(h, data[0x14]);
+ PyDict_SetItemString(caseData, "SBDS Chemistry", _val);
+ Py_DECREF(_val);
+ }
+
+ _val = PyString_FromFormat("0x%08X", DWORD(data+0x16));
+ PyDict_SetItemString(caseData, "OEM-specific Information", _val);
+ Py_DECREF(_val);
break;
case 23: /* 3.3.24 System Reset */