#pragma once enum SceLocationLocationMethod : s32 { SCE_LOCATION_LMETHOD_NONE = 0, SCE_LOCATION_LMETHOD_AGPS_AND_3G_AND_WIFI = 1, SCE_LOCATION_LMETHOD_GPS_AND_WIFI = 2, SCE_LOCATION_LMETHOD_WIFI = 3, SCE_LOCATION_LMETHOD_3G = 4, SCE_LOCATION_LMETHOD_GPS = 5 }; enum SceLocationHeadingMethod : s32 { SCE_LOCATION_HMETHOD_NONE = 0, SCE_LOCATION_HMETHOD_AUTO = 1, SCE_LOCATION_HMETHOD_VERTICAL = 2, SCE_LOCATION_HMETHOD_HORIZONTAL = 3, SCE_LOCATION_HMETHOD_CAMERA = 4 }; enum SceLocationDialogStatus : s32 { SCE_LOCATION_DIALOG_STATUS_IDLE = 0, SCE_LOCATION_DIALOG_STATUS_RUNNING = 1, SCE_LOCATION_DIALOG_STATUS_FINISHED = 2 }; enum SceLocationDialogResult : s32 { SCE_LOCATION_DIALOG_RESULT_NONE = 0, SCE_LOCATION_DIALOG_RESULT_DISABLE = 1, SCE_LOCATION_DIALOG_RESULT_ENABLE = 2 }; enum SceLocationPermissionApplicationStatus : s32 { SCE_LOCATION_PERMISSION_APPLICATION_NONE = 0, SCE_LOCATION_PERMISSION_APPLICATION_INIT = 1, SCE_LOCATION_PERMISSION_APPLICATION_DENY = 2, SCE_LOCATION_PERMISSION_APPLICATION_ALLOW = 3 }; enum SceLocationPermissionStatus : s32 { SCE_LOCATION_PERMISSION_DENY = 0, SCE_LOCATION_PERMISSION_ALLOW = 1 }; struct SceLocationLocationInfo { le_t latitude; le_t longitude; le_t altitude; le_t accuracy; le_t reserve; le_t direction; le_t speed; le_t timestamp; }; struct SceLocationHeadingInfo { le_t trueHeading; le_t headingVectorX; le_t headingVectorY; le_t headingVectorZ; le_t reserve; le_t reserve2; le_t timestamp; }; using SceLocationLocationInfoCallback = void(s32 result, u8 handle, vm::cptr location, vm::ptr userdata); using SceLocationHeadingInfoCallback = void(s32 result, u8 handle, vm::cptr heading, vm::ptr userdata); struct SceLocationPermissionInfo { SceLocationPermissionStatus parentalstatus; SceLocationPermissionStatus mainstatus; SceLocationPermissionApplicationStatus applicationstatus; };