one_wire_device.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <stdlib.h>
  2. #include "maxim_crc.h"
  3. #include "one_wire_device.h"
  4. #include "one_wire_slave.h"
  5. #include "one_wire_slave_i.h"
  6. struct OneWireDevice {
  7. uint8_t id_storage[8];
  8. OneWireSlave* bus;
  9. };
  10. OneWireDevice* onewire_device_alloc(
  11. uint8_t id_1,
  12. uint8_t id_2,
  13. uint8_t id_3,
  14. uint8_t id_4,
  15. uint8_t id_5,
  16. uint8_t id_6,
  17. uint8_t id_7,
  18. uint8_t id_8) {
  19. OneWireDevice* device = malloc(sizeof(OneWireDevice));
  20. device->id_storage[0] = id_1;
  21. device->id_storage[1] = id_2;
  22. device->id_storage[2] = id_3;
  23. device->id_storage[3] = id_4;
  24. device->id_storage[4] = id_5;
  25. device->id_storage[5] = id_6;
  26. device->id_storage[6] = id_7;
  27. device->id_storage[7] = id_8;
  28. device->bus = NULL;
  29. return device;
  30. }
  31. void onewire_device_free(OneWireDevice* device) {
  32. if(device->bus != NULL) {
  33. onewire_slave_detach(device->bus);
  34. }
  35. free(device);
  36. }
  37. void onewire_device_send_id(OneWireDevice* device) {
  38. if(device->bus != NULL) {
  39. onewire_slave_send(device->bus, device->id_storage, 8);
  40. }
  41. }
  42. void onewire_device_attach(OneWireDevice* device, OneWireSlave* bus) {
  43. device->bus = bus;
  44. }
  45. void onewire_device_detach(OneWireDevice* device) {
  46. device->bus = NULL;
  47. }
  48. uint8_t* onewire_device_get_id_p(OneWireDevice* device) {
  49. return device->id_storage;
  50. }