标签: hal

我的单身人士可以被多次叫

我已经基于c ++ 11实现了单例。但是在某些情况下,可以多次调用构造函数。

该类将编译为静态lib,并由其他so lib(一个以上so lib)使用。并且该系统是多线程系统(在Android HAL级别运行)

/// .h文件:

class Logger
{
public:

    /// Return the singleton instance of Logger
    static Logger& GetInstance() {
        static Logger s_loggerSingleton;
        return s_loggerSingleton;
    }

private:

    /// Constructor
    Logger();
    /// Destructor
    ~Logger();
}
Run Code Online (Sandbox Code Playgroud)

/// .cpp文件

Logger::Logger()
{
   ALOGE("OfflineLogger create");
}

Logger::~Logger()
{

}
Run Code Online (Sandbox Code Playgroud)

应该创建一次,例如:

03-21 01:52:20.785   728  4522 E         : OfflineLogger create
Run Code Online (Sandbox Code Playgroud)

但是我可以看到它已经创建了不止一次

03-21 01:52:20.785   728  4522 E         : OfflineLogger create
03-21 01:52:20.863   728  2274 E         : OfflineLogger create
03-21 01:52:20.977   728  2273 E         : …
Run Code Online (Sandbox Code Playgroud)

c++ singleton android hal

30
推荐指数
1
解决办法
3788
查看次数

如何使用Spring HATEOAS更改HAL链接格式

我正在使用Spring HATEOAS(0.16.0.RELEASE)构建Spring REST应用程序,我希望JSON链接输出看起来像:

_links: {
   self: {
     href: "https://<ip>/api/policies/321"
   }
}
Run Code Online (Sandbox Code Playgroud)

虽然它呈现如下:

   "links":
      [{
       "rel":"self",
       "href":"http://<ip>/api/policies/321"
      }]
Run Code Online (Sandbox Code Playgroud)

我正在使用HATEOAS ResourceResourceAssembler.

为什么我会使用这种格式而不是其他格式?我该怎么改变它?

rest spring hal spring-mvc spring-hateoas

22
推荐指数
1
解决办法
9631
查看次数

STM32F4 UART HAL驱动程序

我正在试图弄清楚如何使用这个新的HAL驱动程序.我希望使用HAL_UART_Receive_IT()设置设备的数据来接收数据时运行中断功能.

问题是你必须在中断触发之前指定要读取的数据长度.我计划像不同长度的命令一样发送控制台,因此不能有固定的长度.我假设唯一的方法是一次读取单个字符并构建一个单独的字符串.

HAL驱动程序似乎有一个问题,如果您设置HAL_UART_Receive_IT()接收x字符数,然后尝试发送多个x字符,将出现错误.

目前我不知道我是否正确的方式,任何想法?

hal stm32 stm32f4discovery

18
推荐指数
2
解决办法
6万
查看次数

有没有Linux无线电标准?

我们即将着手实施一个运行Linux的设备(其中包括)将附加到软件定义的FM/AM无线电,该设备还可以接收描述播放列表和其他此类内容的RDS数据.这是一个相对愚蠢的设备,主要包含一个或两个DSP作为调谐器,否则对信号的处理非常少.

我正在考虑设备的内核驱动程序,然后是用户区硬件抽象层,它提供了标准化的接口,并抽象了RDS数据收到的确切时间的细节,并处理错误处理和所有其他杂乱的东西.是否已经有像这样的用户区层?要么完全避免使用它,要么使我们的东西与已经存在的东西插件兼容将是很好的,所以如果我们想要的话,我们可以使用其他项目用于无线电UI.

linux embedded hal radio

16
推荐指数
1
解决办法
1769
查看次数

Android Studio:硬件支持HAL太慢,只能写入720帧中的0帧

我在Android Studio中收到错误,app无法与其他应用程序通信,两个同时使用的仿真器使用几乎100%的处理器.

我没有收到任何错误,除了"硬件支持HAL太慢,只能写入720帧中的0".在这种情况下我该怎么办?我觉得它的模拟器问题太慢了,是真的吗?

这是我的日志:

04-18 16:57:56.583 1382-1435/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 4321429 , only wrote 4168800
04-18 16:57:57.005 9136-9147/com.example.matt.rider I/art: Background sticky concurrent mark sweep GC freed 20288(877KB) AllocSpace objects, 3(96KB) LOS objects, 0% free, 14MB/14MB, paused 17.734ms total 501.934ms
04-18 16:57:57.289 9136-9147/com.example.matt.rider I/art: Background partial concurrent mark sweep GC freed 5087(243KB) AllocSpace objects, 13(2MB) LOS objects, 26% free, 11MB/15MB, paused 14.179ms total 261.011ms
04-18 16:57:58.703 2420-2432/com.google.android.googlequicksearchbox:search I/art: Background partial concurrent mark sweep GC freed …
Run Code Online (Sandbox Code Playgroud)

java multithreading android processor hal

15
推荐指数
1
解决办法
1371
查看次数

使Android使用新的Audio HAL需要什么

我正在编写一个新的Android Audio HAL,让我的应用程序将音频提供给其他应用程序,以允许我的掌上电脑远程麦克风输入到达Google应用程序.基本上,虚拟音频线.

它正在进行中.我可能会重写AUDIO_DEVICE_IN_BACK_MIC,但这是有建议的.

我对如何确保Android使用此HAL进行输入有疑问.

我需要替换audio.primary.default.so还是应该将其保留为audio.vcable.default.so?

更具体地说:如果我不替换主要内容,Android将如何知道使用我的HAL而不是主要?


更新:

我真的可以在这项工作中使用任何帮助.任何指针都有帮助.

我写过一个Audio HAL模块.我在audio_policy.conf中添加了以下(粗体项):

全球:

global_configuration {
  attached_output_devices AUDIO_DEVICE_OUT_SPEAKER|**AUDIO_DEVICE_OUT_LINE**
  default_output_device AUDIO_DEVICE_OUT_SPEAKER
  attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|**AUDIO_DEVICE_IN_LINE**
}
Run Code Online (Sandbox Code Playgroud)

并在audio_hw_modules下

  vloop {
    inputs {
      vloop {
        sampling_rates 16000
        channel_masks AUDIO_CHANNEL_IN_MONO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_IN_LINE
      }
    }
    outputs {
      vloop {
        sampling_rates 16000
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_LINE
        flags AUDIO_OUTPUT_FLAG_DIRECT
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

我还在AudioFlinger.cpp中添加了以下(粗体)

static const char * const audio_interfaces[] = {
    AUDIO_HARDWARE_MODULE_ID_PRIMARY,
    AUDIO_HARDWARE_MODULE_ID_A2DP,
    AUDIO_HARDWARE_MODULE_ID_USB,
    **AUDIO_HARDWARE_MODULE_ID_VLOOP**
};
Run Code Online (Sandbox Code Playgroud)

我可以看到,在启动过程中,我的HAL被加载,我得到这些日志:

10-06 06:14:40.365 194-194/? I/AudioFlinger: Using default 3000 mSec as standby …
Run Code Online (Sandbox Code Playgroud)

audio android hal

11
推荐指数
1
解决办法
4375
查看次数

如何在 CubeMX STM32 中使用 LL(低级)驱动程序?

我正在使用 STM32CubeMX 为 STM32F103 微控制器创建一个空白项目。使用 HAL 驱动程序(默认),我得到了一个快速运行的闪烁示例,但我想尝试使用 LL(低级)驱动程序而不是 HAL。

当我转到 CubeMX 中的项目 > 设置 > 高级设置时,我看到列出的外围设备,并且每个外围设备旁边都有一个下拉菜单,其中只有一个选项,HAL。根据文档,这是我可以为每个外围设备选择 LL 或 HAL 的地方。

如何在 STM32CubeMX 中启用 LL 驱动程序?

详细信息:我在 Ubuntu (16.04) 上全新安装了 STM32CubeMX (4.23.0) 并为 STM32F103C8 微控制器创建了一个新项目(这是在“Blue Pill”板上)。我正在使用 SW4STM32 IDE,除了我必须在配置文件中选择 STLink V2 而不是 V2.1 之外,一切都或多或少都是开箱即用的。

hal stm32 cubemx stm32f1

11
推荐指数
2
解决办法
2万
查看次数

STM32的第一个项目,在C++中使用HAL

我想在C++中使用HAL为STM32创建一个项目.不幸的是,CubeMX仅支持C中的项目.但是,HAL支持C++.

我在CubeMX中创建了一个项目,我试图将它导入上面的任何IDE但没有任何成功,因为它是作为C项目导入的.所以它看起来不是一个好的解决方案.

此外,我尝试在上述IDE中创建一个C++项目,并从CubeMX添加它的文件.这似乎更逻辑,但我不能以正确的方式做到,因为我的配置仍然是错误的.

任何人都可以解释我如何在Eclipse或Atollic TrueSTUDIO中配置新的C++项目才能使用HAL?

c++ hal stm32

7
推荐指数
3
解决办法
2万
查看次数

HAL 虚拟设备:如何“代理”麦克风

我正在尝试创建“虚拟麦克风”,它应该在默认输入设备/麦克风的“前面”工作。因此,当用户选择“虚拟麦克风”作为输入(例如在 Audacity 中)并开始录制声音时 - Audacity 将从虚拟设备驱动程序接收样本,这些样本是由驱动程序从真实/默认麦克风中获取的。所以“虚拟麦克风”是一种真实(默认/内置/等)的代理设备。这是稍后即时处理麦克风输入所必需的。

到目前为止,我创建了虚拟 HAL 设备(基于 Apple 的 NullAudio.c 驱动程序示例),我可以为 Audacity 生成程序声音,但我仍然无法弄清楚从内部驱动程序读取真实麦克风数据的方法(使用其 deviceID) .

是否可以像通常的应用程序一样使用普通录音(通过 AudioUnits/AURemoteIO/AUHAL)等?或者应该使用 IOServices 之类的东西?

文件指出

AudioServerPlugIn 在有限的环境中运行。首先,AudioServerPlugIn 可能不会对 CoreAudio.framework 中的客户端 HAL API 进行任何调用。这将导致未定义(但通常是不好的)行为。

但在读取麦克风数据方面,尚不清楚哪些 API 是“客户端”API,哪些不是。

虚拟设备驱动程序可以/应该使用什么样的 API 来实时访问真实的麦克风数据?

macos hal driver core-audio

7
推荐指数
0
解决办法
498
查看次数

嵌入式 HAL 结构泛型的使用

我正在为 STM32 微控制器编写嵌入式程序。我希望能够将代表按钮的 GPIO 引脚存储在一个漂亮的、统一的结构中。

由于embedded-hal使用泛型对“Pin”结构的状态进行编码,因此每个GPIO都有不同的Rust类型,但是对于我的情况(按钮),它们都实现了embedded_hal::digital::v2::InputPin特征。

我可以明确指定每个成员的类型,但是在进行配置时我还必须为每个按钮编写引脚和端口,即:

    let mut middle = gpioa
        .pa6
        .into_pull_up_input(&mut gpioa.moder, &mut gpioa.pupdr);
Run Code Online (Sandbox Code Playgroud)

这意味着在结构中指定类型会导致冗余,如果我需要更改硬件中的引脚,我将需要在代码中的多个位置更改它。

存储这些引脚的规范方法是什么?当然,我不能使用特征对象,因为它位于嵌入式上下文中。

目前我有以下内容:

use embedded_hal::digital::v2::InputPin;

struct Buttons<M, R, L, U, D>
where
    M: InputPin,
    R: InputPin,
    L: InputPin,
    U: InputPin,
    D: InputPin,
{
    middle: M,
    right: R,
    left: L,
    up: U,
    down: D
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是潜在的代码味道。

另外,如果我想将此按钮结构存储在另一个结构中,则此父结构中的泛型数量很可能会非常大,除非我明确指定(因此写入两次)引脚类型。

有没有更好、更高效的方法?

embedded hal rust

7
推荐指数
1
解决办法
1407
查看次数