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

code quality: fix building with -Wall -Wextra -pedantic #13

Merged
merged 1 commit into from
Dec 31, 2023
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
36 changes: 20 additions & 16 deletions cmidi2.h
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,7 @@ static inline cmidi2_ump128_t cmidi2_ump_endpoint_info_notification(cmidi2_ump_v
}

static inline cmidi2_ump128_t cmidi2_ump_device_identity_notification(uint32_t manufacturerIdIn7bitArray, uint8_t deviceFamilyLSB, uint8_t deviceFamilyMSB, uint8_t deviceFamilyModelLSB, uint8_t deviceFamilyModelMSB, uint32_t softwareRevisionIn7bitArray) {
(void) deviceFamilyModelMSB;
cmidi2_ump128_t ret = {
(uint32_t) (CMIDI2_MESSAGE_TYPE_UMP_STREAM << 28) + (CMIDI2_UMP_STREAM_STATUS_DEVICE_IDENTITY << 16),
manufacturerIdIn7bitArray,
Expand Down Expand Up @@ -433,17 +434,17 @@ static inline cmidi2_ump128_t cmidi2_ump_stream_configuration_request(uint8_t pr
cmidi2_ump128_t ret = {
(uint32_t) (CMIDI2_MESSAGE_TYPE_UMP_STREAM << 28) + (CMIDI2_UMP_STREAM_STATUS_STREAM_CONFIGURATION_REQUEST << 16) + (protocol << 8) + (rxJR ? 2 : 0) + (txJR ? 1 : 0),
0,
0
};
0,
0};
return ret;
}

static inline cmidi2_ump128_t cmidi2_ump_stream_configuration_notification(uint8_t protocol, bool rxJR, bool txJR) {
cmidi2_ump128_t ret = {
(uint32_t) (CMIDI2_MESSAGE_TYPE_UMP_STREAM << 28) + (CMIDI2_UMP_STREAM_STATUS_STREAM_CONFIGURATION_NOTIFICATION << 16) + (protocol << 8) + (rxJR ? 2 : 0) + (txJR ? 1 : 0),
0,
0
};
0,
0};
return ret;
}

Expand Down Expand Up @@ -808,7 +809,7 @@ typedef void*(*cmidi2_ump_handler_u128)(uint64_t data1, uint64_t data2, size_t i
// This returns NULL for success, or anything else that `sendUMP` returns for failure.
static inline void* cmidi2_ump_sysex8_process(uint8_t group, void* sysex, uint32_t length, uint8_t streamId, cmidi2_ump_handler_u128 sendUMP, void* context)
{
int32_t numPackets = cmidi2_ump_sysex8_get_num_packets(length);
uint32_t numPackets = cmidi2_ump_sysex8_get_num_packets(length);
for (size_t p = 0; p < numPackets; p++) {
uint64_t result1, result2;
cmidi2_ump_sysex8_get_packet_of(group, streamId, length, sysex, p, &result1, &result2);
Expand Down Expand Up @@ -885,7 +886,7 @@ static inline void* cmidi2_ump_mds_process(uint8_t group, uint8_t mdsId, void* d
int32_t numChunks = cmidi2_ump_mds_get_num_chunks(length);
for (int c = 0; c < numChunks; c++) {
int32_t maxChunkSize = 14 * 65535;
int32_t chunkSize = c + 1 == numChunks ? length % maxChunkSize : maxChunkSize;
int32_t chunkSize = c + 1 == numChunks ? (int32_t)(length % maxChunkSize) : maxChunkSize;
int32_t numPayloads = cmidi2_ump_mds_get_num_payloads(chunkSize);
for (int p = 0; p < numPayloads; p++) {
uint64_t result1, result2;
Expand Down Expand Up @@ -1917,12 +1918,14 @@ static inline void cmidi2_ci_property_notify(uint8_t* buf, uint8_t versionAndFor

static inline void cmidi2_ci_process_get_capabilities(uint8_t* buf, uint8_t subId2, uint8_t versionAndFormat,
uint32_t sourceMUID, uint32_t destinationMUID) {
(void) subId2;
cmidi2_ci_message_common(buf, CMIDI2_CI_DEVICE_ID_WHOLE_FUNCTION_BLOCK, CMIDI2_CI_SUB_ID_2_PROCESS_GET_CAPABILITIES,
versionAndFormat, sourceMUID, destinationMUID);
}

static inline void cmidi2_ci_process_get_capabilities_reply(uint8_t* buf, uint8_t subId2, uint8_t versionAndFormat,
uint32_t sourceMUID, uint32_t destinationMUID, uint8_t processInquirySupportedFeatures) {
(void) subId2;
cmidi2_ci_message_common(buf, CMIDI2_CI_DEVICE_ID_WHOLE_FUNCTION_BLOCK, CMIDI2_CI_SUB_ID_2_PROCESS_GET_CAPABILITIES_REPLY,
versionAndFormat, sourceMUID, destinationMUID);
buf[13] = processInquirySupportedFeatures;
Expand All @@ -1933,6 +1936,7 @@ static inline void cmidi2_ci_process_midi_report_common(uint8_t* buf, uint8_t de
uint8_t messageDataControl, uint8_t requestedSystemMessages,
uint8_t requestedChannelControllerMessages,
uint8_t requestedNoteDataMessages) {
(void) subId2;
cmidi2_ci_message_common(buf, deviceId, CMIDI2_CI_SUB_ID_2_PROCESS_GET_CAPABILITIES,
versionAndFormat, sourceMUID, destinationMUID);
buf[13] = messageDataControl;
Expand Down Expand Up @@ -2170,6 +2174,7 @@ static inline void* cmidi2_internal_convert_add_midi1_sysex7_ump_to_list(uint64_
}

static inline void* cmidi2_internal_convert_add_midi1_sysex8_ump_to_list(uint64_t data1, uint64_t data2, size_t index, void* context) {
(void) index;
cmidi2_convert_sysex_context* s8ctx = (cmidi2_convert_sysex_context*) context;
s8ctx->conversion_context->ump[s8ctx->dst_offset] = data1 >> 32;
s8ctx->conversion_context->ump[s8ctx->dst_offset + 1] = data1 & 0xFFFFFFFF;
Expand Down Expand Up @@ -2361,14 +2366,14 @@ static enum cmidi2_midi_conversion_result cmidi2_convert_midi1_to_ump(cmidi2_mid
// UMP to MIDI1 Translator

static int32_t cmidi2_internal_convert_jr_timestamp_to_timecode(int32_t deltaTime, cmidi2_midi_conversion_context* context) {
(void) context;
// FIXME: implement
return deltaTime;
}

static size_t cmidi2_internal_add_midi1_delta_time(uint8_t* dst, cmidi2_midi_conversion_context* context, int32_t deltaTime) {
if (!context || context->skip_delta_time)
return 0;
size_t dLen = context->midi1_num_bytes;
size_t *dIdx = (size_t*) &context->midi1_proceeded_bytes;
int32_t len = cmidi2_midi1_get_7bit_encoded_int_length(deltaTime);
cmidi2_midi1_write_7bit_encoded_int(dst, deltaTime);
Expand All @@ -2381,8 +2386,9 @@ static size_t cmidi2_internal_add_midi1_delta_time(uint8_t* dst, cmidi2_midi_con
static inline size_t cmidi2_convert_single_ump_to_timed_midi1(
uint8_t* dst, size_t maxBytes, cmidi2_ump* ump, int32_t deltaTime,
cmidi2_midi_conversion_context* context, uint8_t* sysex7Buffer, size_t* sysex7BufferIndex) {
(void) maxBytes;
size_t midiEventSize = 0;
uint64_t sysex7U64, sysex8_1, sysex8_2;
uint64_t sysex7U64;
uint8_t sysex7NumBytesInUmp;

uint8_t messageType = cmidi2_ump_get_message_type(ump);
Expand Down Expand Up @@ -2554,11 +2560,9 @@ static enum cmidi2_midi_conversion_result cmidi2_convert_ump_to_midi1(cmidi2_mid
while (*sIdx < sLen) {
int32_t deltaTimeInJRTimestamp = 0;
cmidi2_ump* ump;
bool wasTimestamp = false;
do {
ump = (cmidi2_ump*) ((uint8_t*) context->ump + *sIdx);
if (IS_JR_TIMESTAMP(ump)) {
wasTimestamp = true;
if (!context->skip_delta_time)
deltaTimeInJRTimestamp += cmidi2_ump_get_jr_timestamp_timestamp(ump);
}
Expand Down Expand Up @@ -2674,7 +2678,7 @@ static inline bool cmidi2_internal_ump_merge_sequence_write_delta_time(int32_t t
void* dst, int32_t *dIdx, size_t dstSize) {
int32_t deltaTime = (timestamp1 <= timestamp2 ? timestamp1 : timestamp2) - *lastTimestamp;
uint8_t jrTSSize = deltaTime / 0x10000 + (deltaTime % 0x10000 ? 1 : 0);
if (*dIdx + jrTSSize * 4 > dstSize)
if (*dIdx + jrTSSize * 4 > (int64_t)dstSize)
return false;
for (int32_t dt = deltaTime; dt > 0; dt -= 0x10000) {
cmidi2_ump_write32((cmidi2_ump*) ((uint8_t*) dst + *dIdx),
Expand All @@ -2696,7 +2700,7 @@ static inline size_t cmidi2_ump_merge_sequences(cmidi2_ump* dst, size_t dstCapac
cmidi2_ump_get_status_code(s1) == CMIDI2_UTILITY_STATUS_JR_TIMESTAMP) {
timestamp1 += cmidi2_ump_get_jr_timestamp_timestamp(s1);
seq1Idx += 4;
if (seq1Idx >= seq1Size)
if (seq1Idx >= (int64_t)seq1Size)
break;
s1 = (cmidi2_ump*) ((uint8_t*) seq1 + seq1Idx);
}
Expand All @@ -2705,11 +2709,11 @@ static inline size_t cmidi2_ump_merge_sequences(cmidi2_ump* dst, size_t dstCapac
cmidi2_ump_get_status_code(s2) == CMIDI2_UTILITY_STATUS_JR_TIMESTAMP) {
timestamp2 += cmidi2_ump_get_jr_timestamp_timestamp(s2);
seq2Idx += 4;
if (seq2Idx >= seq2Size)
if (seq2Idx >= (int64_t)seq2Size)
break;
s2 = (cmidi2_ump*) ((uint8_t*) seq2 + seq2Idx);
}
if (seq1Idx >= seq1Size || seq2Idx >= seq2Size)
if (seq1Idx >= (int64_t)seq1Size || seq2Idx >= (int64_t)seq2Size)
break;
if (!cmidi2_internal_ump_merge_sequence_write_delta_time(
timestamp1, timestamp2, &lastTimestamp, dst, &dIdx, dstCapacity))
Expand All @@ -2736,12 +2740,12 @@ static inline size_t cmidi2_ump_merge_sequences(cmidi2_ump* dst, size_t dstCapac
if (!cmidi2_internal_ump_merge_sequence_write_delta_time(
timestamp1, timestamp2, &lastTimestamp, dst, &dIdx, dstCapacity))
return dIdx;
if (seq1Idx < seq1Size && dIdx + seq1Size - seq1Idx < dstCapacity) {
if (seq1Idx < (int64_t)seq1Size && dIdx + (int64_t)seq1Size - seq1Idx < (int64_t)dstCapacity) {
cmidi2_ump* sp = (cmidi2_ump*) ((uint8_t*) seq1 + seq1Idx);
memcpy((uint8_t*) dst + dIdx, sp, seq1Size - seq1Idx);
dIdx += seq1Size - seq1Idx;
}
if (seq2Idx < seq2Size && dIdx + seq2Size - seq2Idx < dstCapacity) {
if (seq2Idx < (int64_t)seq2Size && dIdx + (int64_t)seq2Size - seq2Idx < (int64_t)dstCapacity) {
cmidi2_ump* sp = (cmidi2_ump*) ((uint8_t*) seq2 + seq2Idx);
memcpy((uint8_t*) dst + dIdx, sp, seq2Size - seq2Idx);
dIdx += seq2Size - seq2Idx;
Expand Down
21 changes: 4 additions & 17 deletions cmidi2_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,12 +196,14 @@ void testType5Messages_sysex()
}

void* sysex8_binary_reader_helper_read_into_ump_forge(uint64_t data1, uint64_t data2, size_t index, void* context) {
(void) index;
cmidi2_ump_forge* forge = (cmidi2_ump_forge*) context;
cmidi2_ump_forge_add_packet_128(forge, data1, data2);
return NULL;
}

cmidi2_ump_binary_read_state* sysex8_binary_reader_helper_select_stream(uint8_t targetStreamId, void* context) {
(void) targetStreamId;
return (cmidi2_ump_binary_read_state*) context;
}

Expand Down Expand Up @@ -421,7 +423,7 @@ void testForEach()
};

uint8_t buf[sizeof(ump)];
for (int i = 0; i < sizeof(buf) / sizeof(uint64_t); i++) {
for (size_t i = 0; i < sizeof(buf) / sizeof(uint64_t); i++) {
// first 32 bits
uint32_t head = ump[i] >> 32;
for (int b = 0; b < 4; b++) {
Expand All @@ -437,7 +439,7 @@ void testForEach()
}

uint8_t bufBE[sizeof(ump)];
for (int i = 0; i < sizeof(bufBE) / sizeof(uint64_t); i++) {
for (size_t i = 0; i < sizeof(bufBE) / sizeof(uint64_t); i++) {
// first 32 bits
uint32_t head = ump[i] >> 32;
for (int b = 0; b < 4; b++) {
Expand Down Expand Up @@ -899,7 +901,6 @@ int testConvertSingleUmpToMidi1 ()
{
cmidi2_ump src[4];
uint8_t dst[16];
size_t retSize;

// MIDI1 Channel Voice Messages

Expand Down Expand Up @@ -1013,7 +1014,6 @@ int testConvertSingleUmpToMidi1 ()
int testConvertMidi1ToUmpNoteOn()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// note on
Expand All @@ -1038,7 +1038,6 @@ int testConvertMidi1ToUmpNoteOn()
int testConvertMidi1ToUmpPAf()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// PAf
Expand All @@ -1063,7 +1062,6 @@ int testConvertMidi1ToUmpPAf()
int testConvertMidi1ToUmpSimpleCC()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// CC Volume
Expand All @@ -1088,7 +1086,6 @@ int testConvertMidi1ToUmpSimpleCC()
int testConvertMidi1ToUmpValidRPN()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// RPN
Expand All @@ -1113,7 +1110,6 @@ int testConvertMidi1ToUmpValidRPN()
int testConvertMidi1ToUmpValidNRPN()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// NRPN
Expand All @@ -1138,7 +1134,6 @@ int testConvertMidi1ToUmpValidNRPN()
int testConvertMidi1ToUmpInvalidRPN()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// only RPN MSB -> error
Expand Down Expand Up @@ -1189,7 +1184,6 @@ int testConvertMidi1ToUmpInvalidRPN()
int testConvertMidi1ToUmpInvalidNRPN()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// only RPN MSB -> error
Expand Down Expand Up @@ -1240,7 +1234,6 @@ int testConvertMidi1ToUmpInvalidNRPN()
int testConvertMidi1ToUmpSimpleProgramChange()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// simple program change
Expand All @@ -1265,7 +1258,6 @@ int testConvertMidi1ToUmpSimpleProgramChange()
int testConvertMidi1ToUmpBankMsbLsbAndProgramChange()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// bank select MSB, bank select LSB, program change
Expand All @@ -1291,7 +1283,6 @@ int testConvertMidi1ToUmpBankMsbLsbAndProgramChange()
int testConvertMidi1ToUmpBankMsbAndProgramChange()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// bank select MSB, then program change (LSB skipped)
Expand All @@ -1317,7 +1308,6 @@ int testConvertMidi1ToUmpBankMsbAndProgramChange()
int testConvertMidi1ToUmpBankLsbAndProgramChange()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// bank select LSB, then program change (MSB skipped)
Expand All @@ -1342,7 +1332,6 @@ int testConvertMidi1ToUmpBankLsbAndProgramChange()
int testConvertMidi1ToUmpCAf()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// CAf
Expand All @@ -1367,7 +1356,6 @@ int testConvertMidi1ToUmpCAf()
int testConvertMidi1ToUmpPitchBend()
{
uint32_t dst[32];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// Pitchbend
Expand Down Expand Up @@ -1440,7 +1428,6 @@ int testConvertUmpToMidi1Notes()
int testConvertUmpToMidi1Sysex()
{
uint8_t dst[16];
cmidi2_ump* ump = (cmidi2_ump*) dst;
cmidi2_midi_conversion_context context;

// Sysex1 - JR Timestamp - Sysex2
Expand Down