C++, std:ofstream, and controlling an amplifiers mute function


 
Thread Tools Search this Thread
Top Forums Programming C++, std:ofstream, and controlling an amplifiers mute function
# 1  
Old 01-31-2019
C++, std:ofstream, and controlling an amplifiers mute function

Recently, I updated the unit I am running applications on with a new CODEC and amplifier; the older parts are EOL. There was a bug with the old setup. For some reason, even when a tone was not being generated, you could hear a noise emanating from the speaker when the LCD brightness was on a higher setting.


In order to counteract that problem the Amplifiers mute function (standby for old amp) was toggled on and off before and after a tone was produced:


Code:
const char *const amplifierGPIO = "/sys/class/gpio/gpio107/value";

    void amplifierOn()
    {
      std::ofstream amp(amplifierGPIO);
      if (amp.is_open())
      {
        amp << "1";
        amp.close();
      }
    }

    void amplifierOff()
    {
      std::ofstream amp(amplifierGPIO);
      if (amp.is_open())
      {
        amp << "0";
        amp.close();
      }
     }

The problem is that now in order to get the same functionality to work with the new amplifier I have to surround the ofstream in sleep statments:


Code:
const char *const amplifierGPIO = "/sys/class/gpio/gpio107/value";

    void amplifierOn()
    {
      sleep(1);
      std::ofstream amp(amplifierGPIO);
      if (amp.is_open())
      {
        amp << "1";
        amp.close();
      }
      sleep(1);
    }

    void amplifierOff()
    {
      sleep(1):
      std::ofstream amp(amplifierGPIO);
      if (amp.is_open())
      {
        amp << "0";
        amp.close();
      }
      sleep(1);
     }

1) Any ideas about why this might be the case? I do not believe it's the mute function on the amplifier itself because outside of the application that uses this ofstream (inside the boot loader) I can play a song and toggle it on and off with the mute function, with no delay needed.


2) Is there another way (other than ofstream) of toggling the GPIO pin 107 from within my application?
# 2  
Old 02-01-2019
Have you considered doing a stack trace to hunt down the timing issue for this?

What system are you working on and what is the C++ compiler you are using, etc?
This User Gave Thanks to Neo For This Post:
# 3  
Old 02-01-2019
@Neo I am working on it. The system is so old I am having to build a VM with Ubuntu 14.04 in order to properly build the kernel in and IDE that will allow me to debug. Hell, in order to build the kernel properly in general. I am also trying to troubleshoot gdb problems. The make file is telling my that the debugging symbols are making it into the build but gdb can't seem to find them. I will get back to you once I have all these 3'rd party tools working.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

"rhgb quiet" controlling the display of commands in single user mode ?"rhgb quiet" controlling the d

Why does removing "rhgb quiet" from the kernel boot parameters control whether or not the commands I enter are displayed in single user mode ? For instance, if I do not remove "rhgb quiet", when I am in single user mode, whatever command I type will not be displayed on the screen. The... (0 Replies)
Discussion started by: Hijanoqu
0 Replies

2. OS X (Apple)

Disable / mute microphone from command line

Googling suggested "osascript -e 'set volume 0' " but that doesn't work. I know I'd found this before... some command-line utility that had something to do with audio, mixers, whatever, but I forgot to keep it somewhere I could find it. I did find references to writing an AppleScript app, but... (3 Replies)
Discussion started by: jnojr
3 Replies

3. Programming

C++ compilation error when I use predicate friend function in the std::sort()

Hi, Can anyone tell me why the following program is giving compiler error when I use a friend function of a class as the comparison predicate for the third parameter of std::sort() algorithm? How to correct it, keep the 'friend' intact? #include <iostream> #include <vector> #include <list>... (1 Reply)
Discussion started by: royalibrahim
1 Replies

4. Programming

attach is not a member of ofstream

Hi, Code written in C++ got compiled successfully using Sun 4.2 Compiler on Solaris 6. As part of migration, i am using same code and trying to compile using Sun 5.8 C++ compiler(Sun Studio11) on Solaris 10 and could not compile the below line, outStr.attach(1); // here outStr is declared... (1 Reply)
Discussion started by: shafi2all
1 Replies

5. Programming

Porting ofstream attach() in linux gcc

Hi We have a huge codebase in HP-UX and we are porting them in RH-Linux. I am facing the problem of making the following code work in gcc - ofstream ofs; int fd = open(fileName, openState, openMode)); func(fd); ...... ...... const Boolean func(const int fileDescriptor) { ... (2 Replies)
Discussion started by: nsinha
2 Replies

6. Shell Programming and Scripting

Help with Getopt::Std

I am working on a script that lists files in a directory with a few file attributes depending on what option the user specifies at the command prompt. The script uses Getopt::Std and takes two switches. The first switch allows the user to specify a directory, the second switch gives a long... (3 Replies)
Discussion started by: Breakology
3 Replies

7. Shell Programming and Scripting

redirecting std error

Hi, I use the following command make all > output-`date +%F-%H-%M-%S`.txt 2>&1 to invoke a MAKE process that takes some weeks to complete. The ouput is redirected to a text file. Now I prefix the above command with time to get time needed for completion of the MAKE process time make... (2 Replies)
Discussion started by: gkamendje
2 Replies

8. Programming

Sun Studio C++ - Getting error in linking std::ostream &std::ostream::operator<<(std:

Hello all Im using CC: Sun C++ 5.6 2004/07/15 and using the -library=stlport4 when linkning im getting The fallowing error : Undefined first referenced symbol in file std::ostream &std::ostream::operator<<(std::ios_base&(*)(std::ios_base&))... (0 Replies)
Discussion started by: umen
0 Replies

9. Shell Programming and Scripting

How to redirect std out and std err to same file

Hi I want both standard output and standard error of my command cmd to go to the same file log.txt. please let me know the best commandline to do this. Thanks (2 Replies)
Discussion started by: 0ktalmagik
2 Replies

10. UNIX for Dummies Questions & Answers

Simple Mute Question (I Think)

Is there any way to mute an application from the command line? Thanks for any help. (3 Replies)
Discussion started by: Switchfoot
3 Replies
Login or Register to Ask a Question