Skip to content
Snippets Groups Projects
Select Git revision
  • 03950616d35f87853d7145cae1b63b28bd5d460c
  • main default protected
2 results

cpu_temp.c

Blame
  • cpu_temp.c 1.28 KiB
    #include "../../../common/include/message.h"
    #include "../../../common/include/userspace_comm.h"
    #include <fcntl.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[]) {
      if (argc < 3 || argc > 3) {
        printf("Invalid arguments provided");
        return EXIT_FAILURE;
      }
    
      userspace_send_handle_t userspace_send_handle;
      if (create_userspace_send_handle(&userspace_send_handle) == -1) {
        perror("Failed to open message queue");
        return EXIT_FAILURE;
      }
    
      int file_fd = open("/sys/class/thermal/thermal_zone0/temp", O_RDONLY);
      if (file_fd == -1) {
        perror("Failed to open file");
        return EXIT_FAILURE;
      }
    
      double cpu_temp;
      char buffer[6];
    
      int sleep_ms = atoi(argv[2]);
    
      while (1) {
        if (pread(file_fd, buffer, sizeof(buffer), 0) == -1) {
          perror("Failed to read file");
          continue;
        }
    
        cpu_temp = (double)atoi(buffer) / 1000;
    
        message_t message = {
            .measurement_id = atoi(argv[1]),
            .datatype = FLOAT64,
            .data.float64 = cpu_temp,
        };
    
        send_userspace_message(&userspace_send_handle, message);
    
        usleep(sleep_ms * 1000);
      }
    
      destroy_userspace_send_handle(&userspace_send_handle);
      close(file_fd);
    
      return EXIT_SUCCESS;
    }