| /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| * |
| * Private declarations for vboot_audio.c. Defined here for easier testing. |
| */ |
| |
| #ifndef VBOOT_REFERENCE_VBOOT_AUDIO_PRIVATE_H_ |
| #define VBOOT_REFERENCE_VBOOT_AUDIO_PRIVATE_H_ |
| |
| #include "vboot_api.h" |
| #include "vboot_audio.h" |
| |
| typedef struct VbDevMusicNote { |
| uint16_t msec; |
| uint16_t frequency; |
| } __attribute__((packed)) VbDevMusicNote; |
| |
| typedef struct VbDevMusic { |
| uint8_t sig[4]; /* "$SND" */ |
| uint32_t checksum; /* crc32 over count & all notes */ |
| uint32_t count; /* number of notes */ |
| VbDevMusicNote notes[1]; /* gcc allows [0], MSVC doesn't */ |
| /* more VbDevMusicNotes follow immediately */ |
| } __attribute__((packed)) VbDevMusic; |
| |
| struct VbAudioContext { |
| /* note tracking */ |
| VbDevMusicNote *music_notes; |
| uint32_t note_count; |
| uint32_t next_note; |
| |
| /* implementation flags */ |
| int background_beep; |
| int free_notes_when_done; |
| |
| /* sound tracking */ |
| uint16_t current_frequency; |
| uint64_t play_until; |
| uint64_t last_time; |
| }; |
| |
| #ifdef FOR_TEST |
| #define CUSTOM_MUSIC |
| #endif |
| |
| #ifdef CUSTOM_MUSIC |
| void *VbExGetMusicPtr(void); |
| uint32_t VbExMaxMusicSize(void); |
| #define CUSTOM_MUSIC_NOTES VbExGetMusicPtr() |
| #define CUSTOM_MUSIC_MAXSIZE VbExMaxMusicSize() |
| #else |
| #define CUSTOM_MUSIC_NOTES 0 |
| #define CUSTOM_MUSIC_MAXSIZE 0 |
| #endif |
| |
| #endif /* VBOOT_REFERENCE_VBOOT_AUDIO_PRIVATE_H_ */ |