Skip to content
Snippets Groups Projects
Select Git revision
  • 8e525671a06cf658d98a07c1d49548d504c782f6
  • main default protected
2 results

CalendarWeek2.jsx

Blame
  • app3.c 2.93 KiB
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <math.h>
    #include <errno.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <errno.h>
    #include <time.h>
    
    #include <sys/ioctl.h>
    #include <sys/types.h>
    #include <sys/sysmacros.h>
    
    #define TEMP_DEV_PATH      "/dev/temp_dev"
    #define SOUND_DEV_PATH     "/dev/sound_dev"
    #define LED_DEV_PATH	   "/dev/led_dev"
    #define LED2_DEV_PATH      "/dev/led2_dev"
    #define INTERVAL      	   50000
    
    #define IOCTL_MAGIC_NUMBER   'K'
    
    #define IOCTL_MAGIC_NUMBER2   'J'
    
    #define IOCTL_CMD_SET_TEMP_BLINK   		_IOWR(IOCTL_MAGIC_NUMBER,1,int)
    #define IOCTL_CMD_SET_TEMP_OFF   		_IOWR(IOCTL_MAGIC_NUMBER,2,int)
    
    #define IOCTL_CMD_SET_SOUND_BLINK		_IOWR(IOCTL_MAGIC_NUMBER2, 1, int)
    #define IOCTL_CMD_SET_SOUND_OFF		_IOWR(IOCTL_MAGIC_NUMBER2, 2, int)
    
    int main() {
       int temp_fd = open(TEMP_DEV_PATH, O_RDWR);
       int sound_fd = open(SOUND_DEV_PATH, O_RDWR);
       int sound_data = 0;
    
       int led_fd, led2_fd;
       int led_data = 1, led2_data = 1;
    
       __pid_t pid;
    
       led_fd = open(LED_DEV_PATH, O_RDONLY);
       led2_fd = open(LED2_DEV_PATH, O_RDONLY);
       
    
       char config[3] = {0, };
       int data[2] = {0, };
       float result[2] = {0, };
       char reg = 0x03;
       if(temp_fd < 0) {
          printf("fail to open TEMP sensor device\n");
          return 1;
       }
       config[0] = 0x02;
       config[1] = 0x15;
       config[2] = 0x40;
    
       for(int i = 0; i < 3; i++) {
          write(temp_fd, &config[i], 1);
          sleep(1);
       }
       sleep(1);
    
       int temp = 0, j = 0;
       float cTemp = 0, fTemp = 0;
       write(temp_fd, &reg, 1);
    
       pid = fork();
    
       if(pid == 0) {
          while(1) {
             read(sound_fd, &sound_data, sizeof(int));
             if(sound_data > 660) {
                   ioctl(led2_fd, IOCTL_CMD_SET_SOUND_BLINK, &led2_data);
    	 }
                
             printf("data : %d\n", sound_data);
             sleep(3);
             ioctl(led2_fd, IOCTL_CMD_SET_SOUND_OFF, &led2_data);
          }
       }
       else {
          while(1) {
             for(int i = 0; i < 2; i++) {
                read(temp_fd, &(data[i]), 1);
                sleep(1);
             }
             printf("%d %d\n", data[0], data[1]);
       
             temp = (data[0] * 256 + (data[1] & 0xFC)) / 4;
             if(temp > 8191)
             {
                temp -= 16384;
             }
             cTemp = temp * 0.03125;
    	 /*
             if(j == 0) {
                result[0] = cTemp;
                j++;
             }
             else{
                if(result[0] != cTemp) {
                   j = 0;
                }
                else {
                   result[0] = cTemp;
                   j++;
                }
             }
    	 */
             printf("Temperature in Celsius is : %.2f C \n", cTemp);
             
             if(cTemp > 50) {
                ioctl(led_fd, IOCTL_CMD_SET_TEMP_BLINK, &led_data);
    	 }
                
             sleep(3);
          	   ioctl(led_fd, IOCTL_CMD_SET_TEMP_OFF, &led_data);
          }
       }
       
       close(temp_fd);
       close(sound_fd);
       close(led_fd);
       close(led2_fd);
    
    }