libnx/nx/include/switch/services/news.h
Luis Scheurenbrand c95b46c053 news: fix structs
2020-11-18 19:16:32 +01:00

110 lines
3.6 KiB
C

/**
* @file news.h
* @brief News service IPC wrapper.
* @author Behemoth
* @copyright libnx Authors
*/
#pragma once
#include "../kernel/event.h"
#include "../services/acc.h"
#include "../sf/service.h"
#include "../types.h"
typedef enum {
NewsServiceType_Administrator = 0, ///< Initializes news:a
NewsServiceType_Configuration = 1, ///< Initializes news:c
NewsServiceType_Manager = 2, ///< Initializes news:m
NewsServiceType_Post = 3, ///< Initializes news:p
NewsServiceType_Viewer = 4, ///< Initializes news:v
NewsServiceType_Count
} NewsServiceType;
typedef struct {
char name[0x20];
} NewsTopicName;
typedef struct {
Service s;
} NewsNewlyArrivedEventHolder;
typedef struct {
Service s;
} NewsDataService;
typedef struct {
Service s;
} NewsDatabaseService;
typedef struct {
Service s;
} NewsOverwriteEventHolder;
typedef struct {
char news_id[0x18];
char user_id[0x18];
s64 received_at;
s32 read;
s32 newly;
s32 displayed;
} NewsRecordV1;
typedef struct {
char news_id[0x18];
char user_id[0x18];
NewsTopicName topic_id;
s64 received_at;
s64 pad_0;
s32 decoration_type;
s32 read;
s32 newly;
s32 displayed;
s32 feedback;
s32 pad_1;
s32 extra_1;
s32 extra_2;
} NewsRecord;
Result newsInitialize(NewsServiceType service_type);
void newsExit(void);
Service *newsGetServiceSession(void);
Result newsCreateNewlyArrivedEventHolder(NewsNewlyArrivedEventHolder *out);
Result newsCreateNewsDataService(NewsDataService *out);
Result newsCreateNewsDatabaseService(NewsDatabaseService *out);
Result newsCreateOverwriteEventHolder(NewsOverwriteEventHolder *out); ///< [2.0.0+]
Result newsPostLocalNews(const void *news, size_t size);
Result newsSetPassphrase(u64 program_id, const char *passphrase);
Result newsGetSubscriptionStatus(const char *filter, u32 *status);
Result newsGetTopicList(u32 channel, u32 *out_count, NewsTopicName *out, u32 max_count); ///< [3.0.0+]
Result newsGetSavedataUsage(u64 *current, u64 *total); ///< [6.0.0+]
Result newsIsSystemUpdateRequired(bool *out);
Result newsGetDatabaseVersion(u32 *version); ///< [10.0.0+]
Result newsRequestImmediateReception(const char *filter);
Result newsSetSubscriptionStatus(const char *filter, u32 status);
Result newsClearStorage(void);
Result newsClearSubscriptionStatusAll(void);
Result newsGetNewsDatabaseDump(void *buffer, u64 size, u64 *out);
void newsNewlyArrivedEventHolderClose(NewsNewlyArrivedEventHolder *srv);
Result newsNewlyArrivedEventHolderGet(NewsNewlyArrivedEventHolder *srv, Event *out);
void newsDataClose(NewsDataService *srv);
Result newsDataOpen(NewsDataService *srv, const char *file_name);
Result newsDataOpenWithNewsRecordV1(NewsDataService *srv, NewsRecordV1 *record);
Result newsDataRead(NewsDataService *srv, u64 *bytes_read, u64 offset, void *out, size_t out_size);
Result newsDataGetSize(NewsDataService *srv, u64 *size);
Result newsDataOpenWithNewsRecord(NewsDataService *srv, NewsRecord *record); ///< [6.0.0+]
void newsDatabaseClose(NewsDatabaseService *srv);
Result newsDatabaseGetListV1(NewsDatabaseService *srv, NewsRecordV1 *out, u32 max_count, const char *where, const char *order, u32 *count, u32 offset);
Result newsDatabaseCount(NewsDatabaseService *srv, const char *filter, u32 *count);
Result newsDatabaseGetList(NewsDatabaseService *srv, NewsRecord *out, u32 max_count, const char *where, const char *order, u32 *count, u32 offset); ///< [6.0.0+]
void newsOverwriteEventHolderClose(NewsOverwriteEventHolder *srv);
Result newsOverwriteEventHolderGet(NewsOverwriteEventHolder *srv, Event *out);