as root

On Friday, 8 July 2016 19:15:47 UTC+3, William Hermans wrote:
>
> Are you running this code as root, or a regular user ?
>
> On Fri, Jul 8, 2016 at 7:03 AM, <[email protected] <javascript:>> 
> wrote:
>
>> Hello,
>>
>> I'm have connected some device on one of the UART peripherals of the 
>> BeagleBone Black, and now I would like to be able to somehow detect if 
>> there's a "BREAK" sequence present (with some kind of Linux signaling 
>> method).
>>
>> I have tried with this code:
>>
>> #include <errno.h>
>> #include <fcntl.h>
>> #include <string.h>
>> #include <termios.h>
>> #include <unistd.h>
>> #include <stdio.h>
>> #include <signal.h>
>>
>>
>> #define error_message printf
>>
>>
>> int set_interface_attribs (int fd, int speed, int parity) {
>>         struct termios tty;
>>
>>         memset (&tty, 0, sizeof tty);
>>
>>         if (tcgetattr (fd, &tty) != 0) {
>>                 error_message ("error %d from tcgetattr", errno);
>>                 return -1;
>>         }
>>
>>
>>         cfsetospeed (&tty, speed);
>>         cfsetispeed (&tty, speed);
>>
>>
>>         tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;     // 8-bit chars
>>         tty.c_iflag &= IGNBRK;         // disable break processing
>>         tty.c_lflag = 0;                // no signaling chars, no echo,
>>                                         // no canonical processing
>>         tty.c_oflag = 0;                // no remapping, no delays
>>         tty.c_cc[VMIN]  = 0;            // read doesn't block
>>         tty.c_cc[VTIME] = 5;            // 0.5 seconds read timeout
>>
>>
>>         tty.c_iflag &= ~(IXON | IXOFF | IXANY); // shut off xon/xoff ctrl
>>
>>
>>         tty.c_cflag |= (CLOCAL | CREAD);// ignore modem controls,
>>                                         // enable reading
>>         tty.c_cflag &= ~(PARENB | PARODD);      // shut off parity
>>         tty.c_cflag |= parity;
>>         tty.c_cflag &= ~CSTOPB;
>>         tty.c_cflag &= ~CRTSCTS;
>>         //tty.c_iflag = ~BRKINT | ~INPCK;
>>
>>
>>         if (tcsetattr (fd, TCSANOW, &tty) != 0) {
>>                 error_message ("error %d from tcsetattr", errno);
>>                 return -1;
>>         }
>>         return 0;
>> }
>>
>> void breakHandler(int signo) {
>>     printf("\n\nCATCHED!!!\n\n");
>> }
>>
>>
>> int main() {
>>
>>
>>  char *portname = "/dev/ttyO5";
>>
>>
>>  int fd = open (portname, O_NOCTTY);
>>
>>  if (fd < 0) {
>>      error_message ("error %d opening %s: %s", errno, portname, strerror 
>> (errno));
>>      return;
>>  }
>>
>>
>>  set_interface_attribs (fd, B19200, 0);  // set speed to 192,000 bps, 
>> 8n1 (no parity)
>>
>>  char buf [100];
>>
>>
>>  if (signal(SIGINT, breakHandler) == SIG_ERR) {
>>      printf("\n\nCan't catch SIGINT!\n\n");
>>  }
>>
>>
>>  fcntl(fd, F_SETOWN, getpid());
>>
>>
>>  struct sigaction saio; /* definition of signal action */
>>
>>  saio.sa_handler = breakHandler;
>>  saio.sa_flags = 0;
>>  saio.sa_restorer = NULL;
>>
>>  sigaction(SIGINT, &saio, NULL);
>>
>>
>>  while(1) {
>>      int n = read (fd, buf, sizeof buf);  // read up to 100 characters 
>> if ready to read
>>      usleep ((95 + 25) * 100);
>>      printf("\n I read:\n");
>>
>>
>>      int i;
>>
>>      for(i = 0; i < n; i++) {
>>          printf("%#08x ", buf[i]);
>>      }
>>
>>
>>      printf("\nError: %s\n", strerror(errno));
>>  }
>>
>>  return 0;
>> }
>>
>> But it seems that it's not working, the signal is only triggered when I 
>> press CTRL+C on my keyboard.
>>
>> What should be the problem?
>>
>> Thanks.
>>
>> -- 
>> For more options, visit http://beagleboard.org/discuss
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "BeagleBoard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/beagleboard/13566592-486b-4c62-8c2c-82220ce660f3%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/beagleboard/13566592-486b-4c62-8c2c-82220ce660f3%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/332849a4-987c-4c4a-b0c4-76f7db22f009%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to