Subversion Repositories svn.mios32

Rev

Rev 984 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
472 tk 1
// $Id: seq_label.c 2635 2019-01-06 17:14:01Z tk $
2
/*
3
 * Label Routines
4
 *
5
 * ==========================================================================
6
 *
7
 *  Copyright (C) 2008 Thorsten Klose (tk@midibox.org)
8
 *  Licensed for personal non-commercial use only.
9
 *  All other rights reserved.
10
 *
11
 * ==========================================================================
12
 */
13
 
14
/////////////////////////////////////////////////////////////////////////////
15
// Include files
16
/////////////////////////////////////////////////////////////////////////////
17
 
18
#include <mios32.h>
19
#include <string.h>
20
 
2635 tk 21
#include "tasks.h"
22
 
472 tk 23
#include "seq_label.h"
24
 
2635 tk 25
#include "seq_file_presets.h"
472 tk 26
 
27
 
28
/////////////////////////////////////////////////////////////////////////////
29
// Initialisation
30
/////////////////////////////////////////////////////////////////////////////
31
s32 SEQ_LABEL_Init(u32 mode)
32
{
33
  return 0; // no error
34
}
35
 
36
 
37
/////////////////////////////////////////////////////////////////////////////
38
// Returns number of label presets
39
/////////////////////////////////////////////////////////////////////////////
40
s32 SEQ_LABEL_NumPresets(void)
41
{
2635 tk 42
  return SEQ_FILE_PRESETS_TrkLabel_NumGet()+1;
472 tk 43
}
44
 
45
/////////////////////////////////////////////////////////////////////////////
46
// This function copies a preset label (15 chars)
47
// Could be loaded from SD-Card later
48
/////////////////////////////////////////////////////////////////////////////
49
s32 SEQ_LABEL_CopyPreset(u8 num, char *dst)
50
{
2635 tk 51
  const int max_chars = 15;
52
  s32 status = 0;
472 tk 53
 
2635 tk 54
  if( num >= 1 && num <= SEQ_FILE_PRESETS_TrkLabel_NumGet() ) {
55
    char str[max_chars+1];
56
 
57
    MUTEX_SDCARD_TAKE;
58
    status = SEQ_FILE_PRESETS_TrkLabel_Read(num, str);
59
    MUTEX_SDCARD_GIVE;
60
 
61
    if( status > 0 ) {
62
      // fill with spaces
63
      size_t len = strlen(str);
64
      strncpy(dst, str, max_chars);
65
      int i;
66
      for(i=len; i<max_chars; ++i)
67
    dst[i] = ' ';
68
    }
472 tk 69
  }
70
 
2635 tk 71
  if( status < 1 ) {
72
    memcpy(dst, "               ", max_chars);
73
  }
74
 
472 tk 75
  return 0; // no error
76
}
77
 
78
 
79
/////////////////////////////////////////////////////////////////////////////
80
// Returns number of category presets
81
/////////////////////////////////////////////////////////////////////////////
82
s32 SEQ_LABEL_NumPresetsCategory(void)
83
{
2635 tk 84
  return SEQ_FILE_PRESETS_TrkCategory_NumGet()+1;
472 tk 85
}
86
 
87
/////////////////////////////////////////////////////////////////////////////
88
// This function copies a preset category (5 chars) into the given array
89
// Could be loaded from SD-Card later
90
/////////////////////////////////////////////////////////////////////////////
91
s32 SEQ_LABEL_CopyPresetCategory(u8 num, char *dst)
92
{
2635 tk 93
  const int max_chars = 5;
94
  s32 status = 0;
95
 
96
  if( num >= 1 && num <= SEQ_FILE_PRESETS_TrkCategory_NumGet() ) {
97
    char str[max_chars+1];
98
 
99
    MUTEX_SDCARD_TAKE;
100
    status = SEQ_FILE_PRESETS_TrkCategory_Read(num, str);
101
    MUTEX_SDCARD_GIVE;
102
 
103
    if( status > 0 ) {
104
      // fill with spaces
105
      size_t len = strlen(str);
106
      strncpy(dst, str, max_chars);
107
      int i;
108
      for(i=len; i<max_chars; ++i)
109
    dst[i] = ' ';
110
    }
472 tk 111
  }
112
 
2635 tk 113
  if( status < 1 ) {
114
    memcpy(dst, "     ", max_chars);
115
  }
116
 
472 tk 117
  return 0; // no error
118
}
119
 
729 tk 120
 
121
/////////////////////////////////////////////////////////////////////////////
122
// Returns number of drum presets
123
/////////////////////////////////////////////////////////////////////////////
124
s32 SEQ_LABEL_NumPresetsDrum(void)
125
{
2635 tk 126
  return SEQ_FILE_PRESETS_TrkDrum_NumGet();
729 tk 127
}
128
 
129
/////////////////////////////////////////////////////////////////////////////
130
// This function copies a preset drum label (5 chars) into the given array
131
// Could be loaded from SD-Card later
132
/////////////////////////////////////////////////////////////////////////////
2635 tk 133
s32 SEQ_LABEL_CopyPresetDrum(u8 num, char *dst, u8 *note)
729 tk 134
{
2635 tk 135
  const int max_chars = 5;
136
  s32 status = 0;
137
 
138
  if( num >= 0 && num < SEQ_FILE_PRESETS_TrkDrum_NumGet() ) {
139
    char str[max_chars+1];
140
 
141
    MUTEX_SDCARD_TAKE;
142
    status = SEQ_FILE_PRESETS_TrkDrum_Read(num+1, str, note, 0);
143
    MUTEX_SDCARD_GIVE;
144
 
145
    if( status > 0 ) {
146
      // fill with spaces
147
      size_t len = strlen(str);
148
      strncpy(dst, str, max_chars);
149
      int i;
150
      for(i=len; i<max_chars; ++i)
151
    dst[i] = ' ';
152
    }
729 tk 153
  }
154
 
2635 tk 155
  if( status < 1 ) {
156
    memcpy(dst, "     ", max_chars);
157
  }
158
 
729 tk 159
  return 0; // no error
160
}