Advertisement
Guest User

Untitled

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