/** @file
  PlatformErrorHandler.h -- Header for PlatformErrorHandler


Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __PLATFORMERRORHANDLER_H__
#define __PLATFORMERRORHANDLER_H__

#include "../uefi_headers/Uefi.h"

//
// Function prototypes (recovered naming from local module docs).
//
//
// _ModuleEntryPoint / ModuleEntryPoint -- standard DXE/SMM entry point
//
EFI_STATUS
EFIAPI
ModuleEntryPoint(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

//
// sub_30D8 -- library constructor dispatcher
//
EFI_STATUS
EFIAPI
sub_30D8(
  VOID
);

// Recovered alias for sub_30D8
#define PlatformErrorHandlerConstructors  sub_30D8

//
// sub_3550 -- main PlatformErrorHandler init
//
EFI_STATUS
EFIAPI
sub_3550(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

// Recovered alias for sub_3550
#define RegisterPlatformErrorHandler    sub_3550

//
// sub_34E0 -- fallback init/cleanup path
//
EFI_STATUS
EFIAPI
sub_34E0(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

// Recovered alias for sub_34E0
#define PlatformErrorHandlerFallbackInit sub_34E0

//
// sub_594 -- observed in local analysis as secondary SMM entry
//
EFI_STATUS
EFIAPI
sub_594(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

// Recovered alias for sub_594
#define PlatformErrorHandlerSmmEntry     sub_594

//
// Public callback API recovered from module docs.
//
EFI_STATUS
EFIAPI
RegisterErrorNotificationCallback(
  VOID  *Callback,
  UINT8  Priority
);

EFI_STATUS
EFIAPI
RegisterErrorSource(
  VOID  *Source
);

VOID
EFIAPI
DispatchNotification(
  VOID  *Context
);

VOID
EFIAPI
DispatchWithEarlyOut(
  VOID  *Context
);

#endif /* __PLATFORMERRORHANDLER_H__ */
