Commit Graph

1384 Commits

Author SHA1 Message Date
Yuri Kunde Schlesner
92ca422088 Kernel: Allow clearing request_objects to re-use buffer space
Reduces the necessary allocation to max(in_handles, out_handles) rather
than (in_handles + out_handles).
2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
8cb65fe65a Kernel: Basic support for IPC translation for HLE services 2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
7656d83df5 Service/sm: Convert srv: to use IPC helpers 2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
21436f5ef7 IPC: Add Pop/PushObjects methods to RequestParser/Builder
These use the context functions to create and look-up handles for the
user.
2017-06-11 13:10:20 -07:00
Yuri Kunde Schlesner
1c4b0ebb1f IPC: Add basic HLERequestContext support to RequestParser/Builder 2017-06-11 13:10:16 -07:00
Yuri Kunde Schlesner
05fee70211 Kernel: Add methods in HLERequestContext abstracting handle creation 2017-06-11 13:07:33 -07:00
Yuri Kunde Schlesner
20e5abb308 ServiceFramework: Use separate copy of command buffer
Copy the IPC command buffer to/from the request context before/after the
handler is invoked. This is part of a move away from using global data
for handling IPC requests.
2017-06-11 13:07:33 -07:00
Yuri Kunde Schlesner
78398d0978 Merge pull request #2756 from yuriks/service-framework
New service framework
2017-06-08 21:03:03 -07:00
Yuri Kunde Schlesner
6f368abe13 Service/sm: Convert 'srv:' to ServiceFramework 2017-06-08 20:59:19 -07:00
Yuri Kunde Schlesner
838faf147e Session: Remove/add some forward declarations 2017-06-08 00:33:57 -07:00
Yuri Kunde Schlesner
d666e01cdf Kernel: Ensure objects are kept alive during ClientSession disconnection
Fixes #2760
2017-06-08 00:33:24 -07:00
Yuri Kunde Schlesner
c92a8a6154 Service: Remove a few redundant namespace qualifiers 2017-06-08 00:11:37 -07:00
Yuri Kunde Schlesner
84c497292a Service: Add new ServiceFramework framework for writing HLE services
The old "Interface" class had a few problems such as using free
functions (Which didn't allow you to write the service handler as if it
were a regular class.) which weren't very extensible. (Only received one
parameter with a pointer to the Interface object.)

The new ServiceFramework aims to solve these problems by working with
member functions and passing a generic context struct as parameter. This
struct can be extended in the future without having to update all
existing service implementations.
2017-06-08 00:11:37 -07:00
James Rowe
8c22334f96 Merge pull request #2737 from Subv/decryptbeacondata
Services/UDS: Implement DecryptBeaconData.
2017-06-07 10:08:43 -06:00
Yuri Kunde Schlesner
6dc133c24a Kernel: Remove some unnecessary namespace qualifications 2017-06-06 14:51:42 -07:00
Subv
d7d0b46fc1 Services/UDS: Implement DecryptBeaconData.
This function decrypts the encrypted data tags contained in the 802.11 beacon frames.
2017-06-06 11:31:20 -05:00
Yuri Kunde Schlesner
d96a9e0c11 Service: Remove unnecessary includes from service.h
This has a huge fallout in terms of needing to fix other files because
all service implementations included that file.
2017-06-06 02:57:23 -07:00
Yuri Kunde Schlesner
23ec6b3d8f Service: Make service registration part of the sm implementation
Also enhances the GetServiceHandle implementation to be more accurate.
2017-06-06 02:57:04 -07:00
Yuri Kunde Schlesner
e5a59ef27c Service/sm: Use an actual semaphore for the notification semaphore
An Event was used way back then when we didn't have proper working
semaphores. Our Semaphore implementation is good enough now.
2017-06-06 02:57:04 -07:00
Yuri Kunde Schlesner
1eee09f364 Service: Move SRV interface to a new sm/ subdirectory
This will contain the implementation of the sm (Service Manager) system
module.
2017-06-06 02:57:04 -07:00
Yuri Kunde Schlesner
6354d08359 Kernel: Add a dedicated SetHleHandler method to ServerPort/ServerSession
This allows attaching a HLE handle to a ServerPort at any point after it
is created, allowing port/session creation to be generic between HLE and
regular services.
2017-06-06 02:56:32 -07:00
Yuri Kunde Schlesner
7e5dd46cf4 ResultVal: Add more convenience utils for creating and cascading results 2017-06-06 00:51:57 -07:00
Yuri Kunde Schlesner
e626a520ca HLE: Move SessionRequestHandler from Service:: to Kernel::
Most of the code that works with this is or will be in the kernel, so
it's a more appropriate place for it to be.
2017-06-05 23:40:11 -07:00
TheKoopaKingdom
f008b22e3b Addressed Bunnei's review comments, and made some other tweaks:
- Deleted GetStatus() because it wasn't used anywhere outside of Core::System.
 - Fixed design flaw where the message bar status could be set despite the game being stopped.
2017-06-02 18:40:39 -04:00
TheKoopaKingdom
59de38b965 Switched to the ERROR_NOT_FOUND constant from errors.h. 2017-06-02 18:40:39 -04:00
TheKoopaKingdom
cea19fd659 Moved whitelist checks from FS_User to the Archive_NCCH handler. 2017-06-02 18:40:27 -04:00
TheKoopaKingdom
a8aef599e0 Created a whitelist of system archives to prevent false positives creating dialogs. 2017-06-02 18:28:14 -04:00
TheKoopaKingdom
37bec598ea Made some changes from review comments:
- Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review).
- Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore.
- Made dialog messages more clear.
- Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic.
- Cleaned up some other stuff.
2017-06-02 18:28:14 -04:00
TheKoopaKingdom
1ecb322daa Added system for handling core errors in citra-qt. 2017-06-02 18:27:56 -04:00
bunnei
4857eb441b Merge pull request #2722 from wwylele/cam-ipc-helper
CAM: use IPCHelper
2017-05-31 19:47:37 -04:00
Yuri Kunde Schlesner
be031989ee Kernel: Move HandleTable to a separate file 2017-05-29 17:34:39 -07:00
Yuri Kunde Schlesner
64ecf81a3c Kernel: Move WaitObject to a separate file
Now that HandleTable doesn't directly depend on WaitObject anymore, this
can be separated from the main kernel.h header.
2017-05-29 16:16:46 -07:00
Yuri Kunde Schlesner
9453223075 Kernel: Removed HandleTable::GetWaitObject
This isn't necessary anymore since plain Get works correctly for
WaitObjects.
2017-05-29 15:10:06 -07:00
Yuri Kunde Schlesner
b17754f998 Kernel: Extract dynamic Object pointer cast into its own function 2017-05-29 14:42:27 -07:00
Yuri Kunde Schlesner
e91f2b7663 Remove some unnecessary inclusions of video_core.h 2017-05-27 18:41:24 -07:00
Yuri Kunde Schlesner
ae095cfb71 Core: Fix some out-of-style includes 2017-05-27 16:31:42 -07:00
wwylele
857510a7c0 fixup!cam: use IPCHelper 2017-05-27 21:30:07 +03:00
Yuri Kunde Schlesner
a5810d61da FS: Remove unused result definition 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
2cdb40d709 Kernel: Centralize error definitions in errors.h 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
743d18f0e4 GSP_GPU: Move error codes from result.h to local file 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
92be29adba FileSys: Move all result description to errors.h 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
3b1f0fea31 result: Make error description a generic integer
It is now known that result code description vary depending on the
module, and so they're best defined on a per-module basis. To support
this, allow passing in an arbitrary integer instead of limiting to the
ones in the ErrorDescription enum. These will be gradually migrated to
their individual users, but a few will be kept as "common" codes shared
by all modules.
2017-05-24 21:05:59 -07:00
Yuri Kunde Schlesner
a75145a2c6 Make BitField and ResultCode constexpr-initializable 2017-05-24 21:05:59 -07:00
wwylele
8cd9522526 cam: move u32->u8 trancation to IPCHelper 2017-05-24 12:50:19 +03:00
wwylele
924292f2cc cam: use IPCHelper 2017-05-24 12:45:36 +03:00
Yuri Kunde Schlesner
cc566dadd8 Merge pull request #2406 from Subv/session_disconnect
Kernel: Properly update port counters on session disconnection.
2017-05-21 17:18:16 -07:00
Subv
37347bfa38 Kernel/Sessions: Remove the ClientSession::Create function.
It is not meant to be used by anything other than CreateSessionPair.
2017-05-21 18:52:42 -05:00
bunnei
152a012373 Merge pull request #2661 from Subv/uds5
Services/UDS: Generate 802.11 beacon frames when a network is open.
2017-05-19 11:04:34 -04:00
emmaus
b2e82d16c8 use IPCHelper for PTM services 2017-05-19 08:44:58 +00:00
Subv
f2d5d8cfac Services/UDS: Use the new IPC helper functions. 2017-05-15 13:05:17 -05:00
Subv
846cc6cee3 Services/UDS: Implement RecvBeaconBroadcastData.
This allows the applications to retrieve 802.11 beacon frames from nearby UDS networks.
Note that the networks are still not announced anywhere.
2017-05-15 13:05:16 -05:00
Subv
528dea988c Services/UDS: Generate the UDS beacons when the beacon callback fires. 2017-05-15 13:05:15 -05:00
Subv
ce5bc477ca Kernel: Remove a now unused enum and variable regarding a session's status. 2017-05-15 11:22:16 -05:00
Subv
ddfabf3133 Kernel: Use a Session object to keep track of the status of a Client/Server session pair.
Reduce the associated port's connection count when a ServerSession is destroyed.
2017-05-15 11:22:15 -05:00
Yuri Kunde Schlesner
180587bb8b Merge pull request #2687 from yuriks/address-mappings
Kernel: Map special regions according to ExHeader
2017-05-14 13:52:40 -07:00
bunnei
15b26249cc Merge pull request #2676 from wwylele/irrst
ir: implement new 3ds HID via ir:rst
2017-05-10 09:56:27 -04:00
Yuri Kunde Schlesner
f18d454eb6 Kernel: Map special regions according to ExHeader
This replaces the hardcoded VRAM/DSP mappings with ones made based on
the ExHeader ARM11 Kernel caps list. While this has no visible effect
for most applications (since they use a standard set of mappings) it
does improve support for system modules and n3DS exclusives.
2017-05-09 21:44:00 -07:00
Yuri Kunde Schlesner
b4a93cfdde DSP: Create backing memory for entire DSP RAM
Also move address space mapping out of video_core.
2017-05-09 21:44:00 -07:00
Yuri Kunde Schlesner
6577bbc3c5 Remove ability to load symbol maps
This was now mostly unused except by thread creation, which used a
symbol of the entrypoint, if available, to name the thread.
2017-05-07 15:33:07 -07:00
wwylele
f9fdaafa04 fixup!ir: implement new 3ds HID via ir:rst 2017-05-07 21:53:27 +03:00
B3n30
8bee016145 Create a random console_unique_id (#2668)
* Create a random console_id when config save_file is created

Added button in system config to refresh the console unique id

* Moved the connect for the button from .ui file to constructor of ConfigureSystem

* Added warning and info dialog
Fixup: Make use of qt5 style connects,
  renamed the refresh button,
  removed some duplicate code,
  changed random device and moved all to the generate function

* Changed the random generator to reflect what a real 3DS stores as console unique id
Fixup: Changed the warning message

* Fixup: Set and Create

* Fixup: Added console id label, therfore removed second message box

* Fixup: fixed the endianess

* Fixup: more endianness fixes

* Fixup: Endianness the 3rd
2017-05-05 20:55:51 -04:00
wwylele
85116643b2 ir: implement new 3ds HID via ir:rst 2017-05-04 12:59:28 +03:00
bunnei
de1b6cc695 Merge pull request #2606 from wwylele/ir
ir: implement circle pad pro
2017-05-03 22:34:12 -04:00
wwylele
12bcf64ab5 ir: implement circle pad pro 2017-05-03 09:44:00 +03:00
Yuri Kunde Schlesner
941a3dda8a Merge pull request #2532 from wwylele/ldrro-ipc
ldr_ro: use IPC helper
2017-04-18 00:32:01 -07:00
wwylele
11ea159aa4 ldr_ro: use IPC helper 2017-04-17 10:11:18 +03:00
bunnei
6a72bd62b5 Merge pull request #2659 from MerryMage/dsp_dsp-correction
dsp_dsp: Messages are modified by service before being sent to DSP
2017-04-13 10:43:13 -04:00
MerryMage
172a362884 dsp_dsp: Messages are modified by service before being sent to DSP 2017-04-12 21:33:07 +01:00
Sebastian Valle
26745f28ea Merge pull request #2628 from Subv/uds
Services/UDS: Initial support for hosting local-wlan networks.
2017-04-12 11:57:24 -05:00
bunnei
26979cd6ef Merge pull request #2533 from Lectem/apt_ipchelper
IpcHelper enhancement and APT refactor
2017-04-06 14:44:52 -04:00
bunnei
37b7df9c59 Merge pull request #2634 from wwylele/battery
shared_page: stub battery state
2017-04-06 14:43:29 -04:00
noah the goodra
7ca9dedfd6 error conversion fixes for soc_u 2017-04-03 10:19:42 -05:00
Michael Theall
31f9c1ab5d Fix OutputDebugString syscall 2017-04-01 04:09:39 -05:00
Sebastian Valle
5c4bd3ef33 Services/UDS: Fixed a style mistake in GetChannel. 2017-03-27 13:08:26 -05:00
Subv
f8f3b27eb3 Services/UDS: Use consistent spelling for WiFi and simplify the GetChannel function. 2017-03-26 08:17:57 -05:00
Subv
0ae6d8be5b Services/UDS: Signal the connection event when closing down the network. 2017-03-26 08:17:56 -05:00
Subv
d7d5bf411a Services/UDS: Do not allow trying to start up a network that only the host can connect to. 2017-03-26 08:17:55 -05:00
Subv
97f1e62b66 Service/UDS: Schedule an event to broadcast the beacon frames every 102.4ms. 2017-03-26 08:17:53 -05:00
Subv
4243c1198f Services/UDS: Store the entire NetworkInfo structure that was used to create the network.
It will be needed when generating the beacon frames.
2017-03-26 08:17:52 -05:00
Subv
9771615f16 Services/UDS: Initial support for hosting local-wlan networks.
Currently it will let games create a network as hosts, but will not broadcast it anywhere and will not allow clients to connect.
2017-03-26 08:17:51 -05:00
wwylele
a37c9fb9d3 ptm: create SharedExtSave file before openning it 2017-03-25 14:22:07 +03:00
wwylele
f7a0328a6e shared_page: stub battery state 2017-03-21 13:25:56 +02:00
Lectem
e60b433efa hopefully fix clang-format issues with old version 2017-03-20 22:47:06 +01:00
Lectem
e9c80ea5b7 address more comments 2017-03-19 01:33:56 +01:00
Lectem
979d2000d2 Cast size_t to u32 for PushStaticBuffer usages 2017-03-18 11:56:21 +01:00
Lectem
12ed746477 IPCHelper Skip method + address comments for apt 2017-03-18 11:47:40 +01:00
wwylele
0123411468 apt: fix RequestBuilder parameters for Unwrap 2017-03-18 11:45:19 +02:00
Lectem
77f4fc473f fix #2560 and other comments 2017-03-18 10:44:01 +01:00
Lectem
fb70c9683c move push out of class body and add u8 u16 bool specializations 2017-03-18 10:44:01 +01:00
Lectem
501e23ce59 refactor APT service to use the new IPC helpers 2017-03-18 10:44:01 +01:00
bunnei
423ab5e2bc Merge pull request #2497 from wwylele/input-2
Refactor input emulation & add SDL gamepad support
2017-03-17 14:59:39 -04:00
bunnei
709e4fa5d2 Merge pull request #2620 from FernandoS27/syscore_error
Refined thread launch on syscore error messages
2017-03-15 21:17:43 -04:00
wwylele
363f36b904 cfg: implement GenHashConsoleUnique 2017-03-12 12:24:57 +02:00
Fernando Sahmkow
b5dbc6cb98 Refined thread launch on syscore error messages 2017-03-09 08:18:18 -05:00
wwylele
e02c4b7195 Input: remove unused stuff & clean up
1. removed zl, zr and c-stick from HID::PadState. They are handled by IR, not HID
2. removed button handling in EmuWindow
3. removed key_map
4. cleanup #include
2017-03-01 23:30:57 +02:00
wwylele
70420272ca HID: use AnalogDevice 2017-03-01 23:30:57 +02:00
wwylele
1d1329af23 HID: use ButtonDevice 2017-03-01 23:30:57 +02:00
wwylele
85ba60d5ec Timer: restore missing signaled=true from #2421 2017-02-27 22:49:46 +02:00
bunnei
5e334af369 Merge pull request #2594 from wwylele/ir-separate
IR: separate functions of each port to their own files
2017-02-27 14:25:50 -05:00
B3n30
dcf115778a Fix log entry in timer::signal (#2600) 2017-02-27 11:04:03 -05:00