fix various warnings, more work on shared memory API
This commit is contained in:
48
examples/SharedMemory/PhysicsClientC_API.cpp
Normal file
48
examples/SharedMemory/PhysicsClientC_API.cpp
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "PhysicsClientC_API.h"
|
||||
#include "PhysicsClient.h"
|
||||
#include "Bullet3Common/b3Scalar.h"
|
||||
|
||||
int b3InitPhysicsParamCommand(struct SharedMemoryCommand* command)
|
||||
{
|
||||
b3Assert(command);
|
||||
command->m_type = CMD_SEND_PHYSICS_SIMULATION_PARAMETERS;
|
||||
command->m_updateFlags = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
int b3PhysicsParamSetGravity(struct SharedMemoryCommand* command, double gravx,double gravy, double gravz)
|
||||
{
|
||||
b3Assert(command->m_type == CMD_SEND_PHYSICS_SIMULATION_PARAMETERS);
|
||||
command->m_physSimParamArgs.m_gravityAcceleration[0] = gravx;
|
||||
command->m_physSimParamArgs.m_gravityAcceleration[1] = gravy;
|
||||
command->m_physSimParamArgs.m_gravityAcceleration[2] = gravz;
|
||||
command->m_updateFlags |= SIM_PARAM_UPDATE_GRAVITY;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
#include "SharedMemoryBlock.h"
|
||||
|
||||
#define B3_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name
|
||||
|
||||
B3_DECLARE_HANDLE(b3PhysicsClientHandle);
|
||||
|
||||
b3PhysicsClientHandle b3ConnectSharedMemory(int memKey, int allowSharedMemoryInitialization);
|
||||
|
||||
void b3DisconnectSharedMemory(b3PhysicsClientHandle physClient);
|
||||
|
||||
int b3ProcessServerStatus(b3PhysicsClientHandle physClient, struct SharedMemoryStatus* status);
|
||||
|
||||
int b3CanSubmitCommand(b3PhysicsClientHandle physClient);
|
||||
|
||||
int b3SubmitClientCommand(b3PhysicsClientHandle physClient, struct SharedMemoryCommand* command);
|
||||
|
||||
int b3GetNumPoweredJoints(b3PhysicsClientHandle physClient);
|
||||
|
||||
void b3GetPoweredJointInfo(int linkIndex, struct PoweredJointInfo* info);
|
||||
|
||||
int b3InitPhysicsParamCommand(struct SharedMemoryCommand* command);
|
||||
int b3PhysicsParamSetGravity(struct SharedMemoryCommand* command, double gravx,double gravy, double gravz);
|
||||
|
||||
#endif
|
||||
35
examples/SharedMemory/PhysicsClientC_API.h
Normal file
35
examples/SharedMemory/PhysicsClientC_API.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef PHYSICS_CLIENT_C_API_H
|
||||
#define PHYSICS_CLIENT_C_API_H
|
||||
|
||||
#include "SharedMemoryBlock.h"
|
||||
|
||||
#define B3_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name
|
||||
|
||||
B3_DECLARE_HANDLE(b3PhysicsClientHandle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
b3PhysicsClientHandle b3ConnectSharedMemory(int memKey, int allowSharedMemoryInitialization);
|
||||
|
||||
void b3DisconnectSharedMemory(b3PhysicsClientHandle physClient);
|
||||
|
||||
int b3ProcessServerStatus(b3PhysicsClientHandle physClient, struct SharedMemoryStatus* status);
|
||||
|
||||
int b3CanSubmitCommand(b3PhysicsClientHandle physClient);
|
||||
|
||||
int b3SubmitClientCommand(b3PhysicsClientHandle physClient, struct SharedMemoryCommand* command);
|
||||
|
||||
int b3GetNumPoweredJoints(b3PhysicsClientHandle physClient);
|
||||
|
||||
void b3GetPoweredJointInfo(int linkIndex, struct PoweredJointInfo* info);
|
||||
|
||||
int b3InitPhysicsParamCommand(struct SharedMemoryCommand* command);
|
||||
int b3PhysicsParamSetGravity(struct SharedMemoryCommand* command, double gravx,double gravy, double gravz);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //PHYSICS_CLIENT_C_API_H
|
||||
48
examples/SharedMemory/SharedMemoryBlock.h
Normal file
48
examples/SharedMemory/SharedMemoryBlock.h
Normal file
@@ -0,0 +1,48 @@
|
||||
#ifndef SHARED_MEMORY_BLOCK_H
|
||||
#define SHARED_MEMORY_BLOCK_H
|
||||
|
||||
#define SHARED_MEMORY_KEY 12347
|
||||
#define SHARED_MEMORY_MAGIC_NUMBER 64738
|
||||
#define SHARED_MEMORY_MAX_COMMANDS 32
|
||||
#define SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE (256*1024)
|
||||
|
||||
#include "SharedMemoryCommands.h"
|
||||
|
||||
struct SharedMemoryBlock
|
||||
{
|
||||
int m_magicId;
|
||||
struct SharedMemoryCommand m_clientCommands[SHARED_MEMORY_MAX_COMMANDS];
|
||||
struct SharedMemoryStatus m_serverCommands[SHARED_MEMORY_MAX_COMMANDS];
|
||||
|
||||
int m_numClientCommands;
|
||||
int m_numProcessedClientCommands;
|
||||
|
||||
int m_numServerCommands;
|
||||
int m_numProcessedServerCommands;
|
||||
|
||||
//m_bulletStreamDataClientToServer is a way for the client to create collision shapes, rigid bodies and constraints
|
||||
//the Bullet data structures are more general purpose than the capabilities of a URDF file.
|
||||
char m_bulletStreamDataClientToServer[SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE];
|
||||
|
||||
//m_bulletStreamDataServerToClient is used to send (debug) data from server to client, for
|
||||
//example to provide all details of a multibody including joint/link names, after loading a URDF file.
|
||||
char m_bulletStreamDataServerToClient[SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE];
|
||||
};
|
||||
|
||||
|
||||
inline void InitSharedMemoryBlock(struct SharedMemoryBlock* sharedMemoryBlock)
|
||||
{
|
||||
sharedMemoryBlock->m_numClientCommands = 0;
|
||||
sharedMemoryBlock->m_numServerCommands = 0;
|
||||
sharedMemoryBlock->m_numProcessedClientCommands=0;
|
||||
sharedMemoryBlock->m_numProcessedServerCommands=0;
|
||||
sharedMemoryBlock->m_magicId = SHARED_MEMORY_MAGIC_NUMBER;
|
||||
}
|
||||
|
||||
#define SHARED_MEMORY_SIZE sizeof(SharedMemoryBlock)
|
||||
|
||||
|
||||
|
||||
|
||||
#endif //SHARED_MEMORY_BLOCK_H
|
||||
|
||||
Reference in New Issue
Block a user