Advertisement
Guest User

Untitled

a guest
Dec 27th, 2011
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. var fs = require('fs');
  2. var buffer = require('buffer');
  3. var util = require('util');
  4.  
  5. var readEeproms = function() {
  6. var data = {};
  7. var addresses = ['3-0054', '3-0055', '3-0056', '3-0057'];
  8. var main = parseMainEeprom(fetchEepromData('1-0050'));
  9. if(main) {
  10. data.main = main;
  11. }
  12. for(var address in addresses) {
  13. var cape = null;
  14. var raw = fetchEepromData(addresses[address]);
  15. if(raw) {
  16. cape = parseCapeEeprom(raw);
  17. if(cape) {
  18. data[addresses[address]] = cape;
  19. }
  20. }
  21. }
  22. return(data);
  23. };
  24.  
  25. var fetchEepromData = function(address) {
  26. var eepromData = new buffer.Buffer(256);
  27. try {
  28. var eepromFile =
  29. fs.openSync(
  30. '/sys/bus/i2c/drivers/at24/'+address+'/eeprom',
  31. 'r'
  32. );
  33. fs.readSync(eepromFile, eepromData, 0, 256, 0);
  34. return(eepromData);
  35. } catch(ex) {
  36. console.warn('Unable to open EEPROM at '+address+': '+ex);
  37. return(null);
  38. }
  39. };
  40.  
  41. var parseMainEeprom = function(x) {
  42. var data = {};
  43. data.header = x.toString('base64', 0, 4);
  44. if(data.header != 'qlUz7g==') {
  45. console.error('Unknown EEPROM format');
  46. return(null);
  47. }
  48. data.boardName = x.toString('ascii', 4, 12);
  49. data.version = x.toString('ascii', 12, 16);
  50. data.serialNumber = x.toString('ascii', 16, 28);
  51. data.configOption = x.toString('base64', 28, 60);
  52. return(data);
  53. };
  54.  
  55. var parseCapeEeprom = function(x) {
  56. var data = {};
  57. data.header = x.toString('base64', 0, 4);
  58. if(data.header != 'qlUz7g==') {
  59. console.error('Unknown EEPROM format');
  60. return(null);
  61. }
  62. data.formatRev = x.toString('ascii', 4, 6);
  63. if(data.formatRev != 'A0') {
  64. console.error('Unknown EEPROM format revision: '+data.formatRev);
  65. return(null);
  66. }
  67. data.boardName = x.toString('ascii', 6, 38);
  68. data.version = x.toString('ascii', 38, 42);
  69. data.manufacturer = eepromData.toString('ascii', 42, 58);
  70. data.partNumber = eepromData.toString('ascii', 58, 74);
  71. data.numPins = eepromData.toString('ascii', 72, 76);
  72. data.serialNumber = x.toString('ascii', 76, 88);
  73. data.currentVDD_3V3EXP = x.readUint16BE(228);
  74. data.currentVDD_5V = x.readUint16BE(230);
  75. data.currentSYS_5V = x.readUint16BE(232);
  76. data.DCSupplied = x.readUint16BE(234);
  77. return(data);
  78. };
  79.  
  80. console.log(readEeproms());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement