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


Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __PLATFORMERRORHANDLER_H__
#define __PLATFORMERRORHANDLER_H__

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

//
// Recovered public symbols from local module analysis.
//
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

EFI_STATUS
EFIAPI
PlatformErrorHandlerConstructors(
  VOID
);

EFI_STATUS
EFIAPI
RegisterPlatformErrorHandler(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

EFI_STATUS
EFIAPI
PlatformErrorHandlerFallbackInit(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

EFI_STATUS
EFIAPI
PlatformErrorHandlerSmmEntry(
  EFI_HANDLE        ImageHandle,
  EFI_SYSTEM_TABLE  *SystemTable
);

EFI_STATUS
EFIAPI
RegisterErrorNotificationCallback(
  VOID  *Callback,
  UINT8  Priority
);

EFI_STATUS
EFIAPI
RegisterErrorSource(
  VOID  *Source
);

VOID
EFIAPI
DispatchNotification(
  VOID  *Context
);

VOID
EFIAPI
DispatchWithEarlyOut(
  VOID  *Context
);

// Sub_XXX compatibility aliases preserved for traceability.
#define sub_30D8   PlatformErrorHandlerConstructors
#define sub_3550   RegisterPlatformErrorHandler
#define sub_34E0   PlatformErrorHandlerFallbackInit
#define sub_594    PlatformErrorHandlerSmmEntry
#define sub_35C8   RegisterErrorSource
#define sub_36B8   RegisterErrorNotificationCallback
#define sub_3810   DispatchNotification
#define sub_3844   DispatchWithEarlyOut

//
// Recovered linked-list globals from decompiled analysis.
//
extern EFI_STATUS  PlatformErrorHandlerStatus;
extern VOID  *ErrorSourceListHead;
extern VOID  *ErrorSourceListTail;
extern VOID  *NotificationCallbackHead;
extern VOID  *NotificationCallbackTail;
extern VOID  *EmcaPlatformProtocol;
extern VOID  *SmmIpmiTransportProtocol;

#endif /* __PLATFORMERRORHANDLER_H__ */
