Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FPGA APIs initial setup #1073

Merged
merged 7 commits into from
Jul 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ set(metadata_dir ${CMAKE_SOURCE_DIR}/source/codegen/metadata)
set(service_output_dir ${CMAKE_SOURCE_DIR}/generated)
set(codegen_dir ${CMAKE_SOURCE_DIR}/source/codegen)
set(custom_dir ${CMAKE_SOURCE_DIR}/source/custom)
set(nidrivers "nidaqmx" "nidcpower" "nidigitalpattern" "nidmm" "nifake" "nifake_extension" "nifake_non_ivi" "nifgen" "nimxlcterminaladaptor_restricted" "nirfmxbluetooth" "nirfmxcdma2k" "nirfmxgsm" "nirfmxinstr" "nirfmxinstr_restricted" "nirfmxlte" "nirfmxnr" "nirfmxspecan" "nirfmxspecan_restricted" "nirfmxtdscdma" "nirfmxwcdma" "nirfmxdemod" "nirfmxwlan" "nirfmxwlan_restricted" "nirfsa" "nirfsg" "nirfsg_restricted" "niscope" "niscope_restricted" "niswitch" "nisync" "nitclk" "nixnet" "nixnetsocket" "visa")
set(nidrivers "nidaqmx" "nidcpower" "nidigitalpattern" "nidmm" "nifake" "nifake_extension" "nifake_non_ivi" "nifgen" "nifpga" "nimxlcterminaladaptor_restricted" "nirfmxbluetooth" "nirfmxcdma2k" "nirfmxgsm" "nirfmxinstr" "nirfmxinstr_restricted" "nirfmxlte" "nirfmxnr" "nirfmxspecan" "nirfmxspecan_restricted" "nirfmxtdscdma" "nirfmxwcdma" "nirfmxdemod" "nirfmxwlan" "nirfmxwlan_restricted" "nirfsa" "nirfsg" "nirfsg_restricted" "niscope" "niscope_restricted" "niswitch" "nisync" "nitclk" "nixnet" "nixnetsocket" "visa")

#----------------------------------------------------------------------
# Create NI Driver APIs proto and server files
Expand Down
134 changes: 134 additions & 0 deletions generated/nifpga/nifpga.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@

//---------------------------------------------------------------------
// This file is generated from NI-FPGA API metadata version 24.3.0
//---------------------------------------------------------------------
// Proto file for the NI-FPGA Metadata
//---------------------------------------------------------------------
syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.ni.grpc.nifpga";
option java_outer_classname = "NiFpga";
option csharp_namespace = "NationalInstruments.Grpc.NiFpga";

package nifpga_grpc;

import "session.proto";

service NiFpga {
rpc Abort(AbortRequest) returns (AbortResponse);
rpc Close(CloseRequest) returns (CloseResponse);
rpc CommitFifoConfiguration(CommitFifoConfigurationRequest) returns (CommitFifoConfigurationResponse);
rpc Download(DownloadRequest) returns (DownloadResponse);
rpc Open(OpenRequest) returns (OpenResponse);
rpc ReleaseFifoElements(ReleaseFifoElementsRequest) returns (ReleaseFifoElementsResponse);
rpc Reset(ResetRequest) returns (ResetResponse);
rpc Run(RunRequest) returns (RunResponse);
rpc StartFifo(StartFifoRequest) returns (StartFifoResponse);
rpc StopFifo(StopFifoRequest) returns (StopFifoResponse);
rpc UnreserveFifo(UnreserveFifoRequest) returns (UnreserveFifoResponse);
}

message AbortRequest {
nidevice_grpc.Session session = 1;
}

message AbortResponse {
int32 status = 1;
}

message CloseRequest {
nidevice_grpc.Session session = 1;
uint32 attribute = 2;
}

message CloseResponse {
int32 status = 1;
}

message CommitFifoConfigurationRequest {
nidevice_grpc.Session session = 1;
uint32 fifo = 2;
}

message CommitFifoConfigurationResponse {
int32 status = 1;
}

message DownloadRequest {
nidevice_grpc.Session session = 1;
}

message DownloadResponse {
int32 status = 1;
}

message OpenRequest {
string session_name = 1;
string bitfile = 2;
string signature = 3;
string resource = 4;
uint32 attribute = 5;
nidevice_grpc.SessionInitializationBehavior initialization_behavior = 6;
}

message OpenResponse {
int32 status = 1;
nidevice_grpc.Session session = 2;
bool new_session_initialized = 3;
}

message ReleaseFifoElementsRequest {
nidevice_grpc.Session session = 1;
uint32 fifo = 2;
uint32 elements = 3;
}

message ReleaseFifoElementsResponse {
int32 status = 1;
}

message ResetRequest {
nidevice_grpc.Session session = 1;
}

message ResetResponse {
int32 status = 1;
}

message RunRequest {
nidevice_grpc.Session session = 1;
uint32 attribute = 2;
}

message RunResponse {
int32 status = 1;
}

message StartFifoRequest {
nidevice_grpc.Session session = 1;
uint32 fifo = 2;
}

message StartFifoResponse {
int32 status = 1;
}

message StopFifoRequest {
nidevice_grpc.Session session = 1;
uint32 fifo = 2;
}

message StopFifoResponse {
int32 status = 1;
}

message UnreserveFifoRequest {
nidevice_grpc.Session session = 1;
uint32 fifo = 2;
}

message UnreserveFifoResponse {
int32 status = 1;
}

220 changes: 220 additions & 0 deletions generated/nifpga/nifpga_client.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@

//---------------------------------------------------------------------
// This file is automatically generated. All manual edits will be lost.
//---------------------------------------------------------------------
// EXPERIMENTAL Client convenience wrapper for NI-FPGA.
//---------------------------------------------------------------------
#include "nifpga_client.h"

#include <grpcpp/grpcpp.h>

#include <nifpga.grpc.pb.h>

#include <cstdint>
#include <memory>
#include <stdexcept>
#include <vector>

namespace nifpga_grpc::experimental::client {

AbortResponse
abort(const StubPtr& stub, const nidevice_grpc::Session& session)
{
::grpc::ClientContext context;

auto request = AbortRequest{};
request.mutable_session()->CopyFrom(session);

auto response = AbortResponse{};

raise_if_error(
stub->Abort(&context, request, &response),
context);

return response;
}

CloseResponse
close(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& attribute)
{
::grpc::ClientContext context;

auto request = CloseRequest{};
request.mutable_session()->CopyFrom(session);
request.set_attribute(attribute);

auto response = CloseResponse{};

raise_if_error(
stub->Close(&context, request, &response),
context);

return response;
}

CommitFifoConfigurationResponse
commit_fifo_configuration(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& fifo)
{
::grpc::ClientContext context;

auto request = CommitFifoConfigurationRequest{};
request.mutable_session()->CopyFrom(session);
request.set_fifo(fifo);

auto response = CommitFifoConfigurationResponse{};

raise_if_error(
stub->CommitFifoConfiguration(&context, request, &response),
context);

return response;
}

DownloadResponse
download(const StubPtr& stub, const nidevice_grpc::Session& session)
{
::grpc::ClientContext context;

auto request = DownloadRequest{};
request.mutable_session()->CopyFrom(session);

auto response = DownloadResponse{};

raise_if_error(
stub->Download(&context, request, &response),
context);

return response;
}

OpenResponse
open(const StubPtr& stub, const std::string& bitfile, const std::string& signature, const std::string& resource, const pb::uint32& attribute, const nidevice_grpc::SessionInitializationBehavior& initialization_behavior)
{
::grpc::ClientContext context;

auto request = OpenRequest{};
request.set_bitfile(bitfile);
request.set_signature(signature);
request.set_resource(resource);
request.set_attribute(attribute);
request.set_initialization_behavior(initialization_behavior);

auto response = OpenResponse{};

raise_if_error(
stub->Open(&context, request, &response),
context);

return response;
}

ReleaseFifoElementsResponse
release_fifo_elements(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& fifo, const pb::uint32& elements)
{
::grpc::ClientContext context;

auto request = ReleaseFifoElementsRequest{};
request.mutable_session()->CopyFrom(session);
request.set_fifo(fifo);
request.set_elements(elements);

auto response = ReleaseFifoElementsResponse{};

raise_if_error(
stub->ReleaseFifoElements(&context, request, &response),
context);

return response;
}

ResetResponse
reset(const StubPtr& stub, const nidevice_grpc::Session& session)
{
::grpc::ClientContext context;

auto request = ResetRequest{};
request.mutable_session()->CopyFrom(session);

auto response = ResetResponse{};

raise_if_error(
stub->Reset(&context, request, &response),
context);

return response;
}

RunResponse
run(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& attribute)
{
::grpc::ClientContext context;

auto request = RunRequest{};
request.mutable_session()->CopyFrom(session);
request.set_attribute(attribute);

auto response = RunResponse{};

raise_if_error(
stub->Run(&context, request, &response),
context);

return response;
}

StartFifoResponse
start_fifo(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& fifo)
{
::grpc::ClientContext context;

auto request = StartFifoRequest{};
request.mutable_session()->CopyFrom(session);
request.set_fifo(fifo);

auto response = StartFifoResponse{};

raise_if_error(
stub->StartFifo(&context, request, &response),
context);

return response;
}

StopFifoResponse
stop_fifo(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& fifo)
{
::grpc::ClientContext context;

auto request = StopFifoRequest{};
request.mutable_session()->CopyFrom(session);
request.set_fifo(fifo);

auto response = StopFifoResponse{};

raise_if_error(
stub->StopFifo(&context, request, &response),
context);

return response;
}

UnreserveFifoResponse
unreserve_fifo(const StubPtr& stub, const nidevice_grpc::Session& session, const pb::uint32& fifo)
{
::grpc::ClientContext context;

auto request = UnreserveFifoRequest{};
request.mutable_session()->CopyFrom(session);
request.set_fifo(fifo);

auto response = UnreserveFifoResponse{};

raise_if_error(
stub->UnreserveFifo(&context, request, &response),
context);

return response;
}


} // namespace nifpga_grpc::experimental::client
Loading
Loading