Sponsored Content
Top Forums Programming C++, std:ofstream, and controlling an amplifiers mute function Post 303029758 by Circuits on Thursday 31st of January 2019 03:18:29 PM
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?
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
ACPI_PANASONIC(4)					   BSD Kernel Interfaces Manual 					 ACPI_PANASONIC(4)

NAME
acpi_panasonic -- ACPI hotkey driver for Panasonic laptops SYNOPSIS
To compile this driver into the kernel, place the following line in your kernel configuration file: device acpi_panasonic Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5): acpi_panasonic_load="YES" DESCRIPTION
The acpi_panasonic driver enables such hotkey facilities of various Panasonic laptops as changing LCD brightness, controlling mixer volumes, entering sleep or suspended state and so on. On the following models it is reported to work: Let's note (or Toughbook, outside Japan) CF- R1N, CF-R2A and CF-R3. It may also work on other models as well. The driver consists of three functionalities. The first is to detect hotkey events and take corresponding actions, which include changing LCD luminance and speaker mute state. The second role is to notify occurrences of the event by way of devctl(4) and eventually to devd(8). The third and last is to provide a way to adjust LCD brightness and sound mute state via sysctl(8). Hotkeys There are 9 hotkeys available on the supported hardware: Fn+F1 Make LCD backlight darker. Fn+F2 Make LCD backlight brighter. Fn+F3 Switch video output between LCD and CRT. Not supported by the acpi_panasonic driver. Fn+F4 Toggle muting the speaker. Fn+F5 Turn the mixer volume down. Fn+F6 Turn the mixer volume up. Fn+F7 Enter suspend-to-RAM state. Fn+F9 Show battery status. Fn+F10 Enter suspend-to-disk state. Actions are automatically taken within the driver for Fn+F1, Fn+F2 and Fn+F4. For the other events such as mixer control and showing battery status, devd(8) should take the role as described below. devd(8) Events When notified to devd(8), the hotkey event provides the following information: system "ACPI" subsystem "Panasonic" type The source of the event in ACPI namespace. The value depends on the model but typically "\_SB_.HKEY". notify Event code (see below). Event codes to be generated are assigned as follows: 0x81-0x86, 0x89 Fn+F<n> pressed. 0x81 corresponds to Fn+F1, 0x82 corresponds to Fn+F2, and so on. 0x01-0x07, 0x09, 0x1a Fn+F<n> released. 0x01 corresponds to Fn+F1, 0x02 corresponds to Fn+F2, and so on. SYSCTL VARIABLES
The following MIBs are available: hw.acpi.panasonic.lcd_brightness_max The maximum level of brightness. The value is read only and automatically set according to hardware model. hw.acpi.panasonic.lcd_brightness_min The minimum level of brightness. The value is read only and automatically set according to hardware model. hw.acpi.panasonic.lcd_brightness Current brightness level of the LCD (read-write). The value ranges from hw.acpi.panasonic.lcd_brightness_min to hw.acpi.panasonic.lcd_brightness_max. hw.acpi.panasonic.sound_mute A read-write boolean flag to control whether to mute the speaker. The value 1 means to mute and 0 not. SEE ALSO
acpi(4), devd.conf(5), devd(8), sysctl(8) HISTORY
The acpi_panasonic driver first appeared in FreeBSD 5.3. AUTHORS
The acpi_panasonic driver and this manual page were written by OGAWA Takaya <t-ogawa@triaez.kaisei.org> and TAKAHASHI Yoshihiro <nyan@FreeBSD.org>. BSD
February 25, 2012 BSD
All times are GMT -4. The time now is 10:23 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy